2014-02-08 79 views
0

我有一些产品的数据库,他们可以用许多类别“标记”。有些产品没有分配类别,我需要找到它们。需要查找没有分类的记录。我创造了这个表:在多对多关系中选择没有类别的记录

ITEMS

+----+------+ 
| ID | Item | 
+----+------+ 
| 1 | qwe | 
| 2 | asw | 
| 3 | wgr | 
+----+------+ 

类别

+----+----------+ 
| ID | Category | 
+----+----------+ 
| 1 | xxx  | 
| 2 | yyy  | 
+----+----------+ 

关系

+---------+--------+ 
| id_item | id_cat | 
+---------+--------+ 
|  1 |  1 | 
|  1 |  2 | 
|  2 |  1 | 
+---------+--------+ 

ŧ他是(不工作)查询:

SELECT item.id COUNT(relationship.id_item) AS n 
FROM item 
JOIN relationships GROUP 
BY relationships .n 
WHERE item.id = relationships.id_item 
AND relationships.n =0; 

回答

1

您可以使用子查询使用NOT IN子句

SELECT i.id 
FROM item i 
WHERE i.id NOT IN (SELECT r.id_item 
    FROM RELATIONSHIP r); 
1

你想要一个左连接,然后发现不符合的:

SELECT i.id, COUNT(relationship.id_item) AS n 
FROM item i LEFT OUTER JOIN 
    relationships r 
    on i.id = r.id_item 
WHERE r.id_item is null; 
相关问题