1

我有两个用于项目和类别的表。一个项目可以属于多个类别。请检查以下小提琴的表格。

http://sqlfiddle.com/#!2/6b248/5

现在我需要从两个表中找出缺失值。我的意思是对于某些项目,在类别表中,类别值为零。对于其他一些在项目表中具有类别值但在类别表中完全缺失的项目。对于类别表中的项目,其类别值为零,我使用以下查询。

SELECT item_id,itemname,category_name FROM item i JOIN category c ON i.category_id=c.category_id GROUP BY c.item_id HAVING MAX(i.category_id)=0 ORDER BY i.item_name

如何更改它,以便它从项目表中获取类别表中缺少条目的项目。我需要两个项目,即类别值为零的项目和类别表中缺少的项目。

4

2 回答 2

1

就像是

select i.*
from items as i
where
    not exists
    (
         select * 
         from categories as c
         where c.item_id = i.item_id and c.cat_id <> 0
    )
于 2013-08-07T06:28:31.987 回答
0
SELECT i.item_id,i.name,c.cat_name FROM 
items AS i LEFT OUTER JOIN categories AS c ON i.item_id=c.item_id 
GROUP BY c.item_id HAVING MAX(c.cat_id)=0 OR c.cat_name is null
ORDER BY i.name
于 2013-08-07T06:33:49.403 回答