我有两个表项目和类别。项目可以是多个类别。请检查以下小提琴表。
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
如何更改它以便从类别表中缺少条目的项目表中获取项目。我需要两个项目,即类别值为零的项目和类别表中缺少的项目。
答案 0 :(得分: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
)
答案 1 :(得分: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