Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL分类帮助_Sql_Mysql_Postgresql - Fatal编程技术网

SQL分类帮助

SQL分类帮助,sql,mysql,postgresql,Sql,Mysql,Postgresql,我有一个按分类法关联内容的数据库,我正在尝试按分类法查询该内容。看起来是这样的: Table 1 content_id, content_name Table 2 content_id, content_taxonmoy SELECT content_id FROM table_1 JOIN table_2 ON table_1.content_id=table_2.content_id WHERE content_taxonomy='ABC' AND content_taxonomy=

我有一个按分类法关联内容的数据库,我正在尝试按分类法查询该内容。看起来是这样的:

Table 1

content_id, content_name

Table 2

content_id, content_taxonmoy
SELECT content_id FROM table_1 JOIN table_2 ON table_1.content_id=table_2.content_id WHERE content_taxonomy='ABC' AND content_taxonomy='123'
我在查询中尝试的是查找具有两种或两种以上相关分类法类型的内容。我的查询如下所示:

Table 1

content_id, content_name

Table 2

content_id, content_taxonmoy
SELECT content_id FROM table_1 JOIN table_2 ON table_1.content_id=table_2.content_id WHERE content_taxonomy='ABC' AND content_taxonomy='123'
除非它什么也不返回。我后来尝试了一个小组:

SELECT content_id FROM table_1 JOIN table_2 ON table_1.content_id=table_2.content_id WHERE content_taxonomy='ABC' AND content_taxonomy='123'GROUP BY content_id, content_taxonomy
但这也不起作用。有什么建议吗

SELECT  *
FROM    content c
WHERE   (
        SELECT  COUNT(*)
        FROM    taxonomy t
        WHERE   t.content_id = c.content_id
                AND t.content_taxonomy IN ('ABC', '123')
        ) = 2
分类法(content\u id,content\u taxonomy)
上创建一个
唯一索引
或一个
主键
,以便快速工作

SELECT  c.*
FROM    (
        SELECT  content_id
        FROM    taxonomy
        WHERE   content_taxonomy IN ('ABC', '123')
        GROUP BY
                content_id
        HAVING  COUNT(*) = 2
        ) t
 JOIN   content c
 ON     c.content_id = t.content_id
在这种情况下,在
分类法(content\u taxonomy,content\u id)
上创建
唯一索引
主键
(注意顺序或字段)

任何一种解决方案都可能比另一种更有效,这取决于每个内容有多少分类法以及匹配的概率

分类法(content\u id,content\u taxonomy)
上创建一个
唯一索引
或一个
主键
,以便快速工作

SELECT  c.*
FROM    (
        SELECT  content_id
        FROM    taxonomy
        WHERE   content_taxonomy IN ('ABC', '123')
        GROUP BY
                content_id
        HAVING  COUNT(*) = 2
        ) t
 JOIN   content c
 ON     c.content_id = t.content_id
在这种情况下,在
分类法(content\u taxonomy,content\u id)
上创建
唯一索引
主键
(注意顺序或字段)

任何一种解决方案都可能比另一种更有效,这取决于每个内容有多少分类法以及匹配的概率