我有2个表:cart_item
和cart_item_category
。
两个表都有itemref
用于加入它们。
现在,itemref
表中可能有多个cart_item_category
,因为每个项目可以属于多个类别。
cart_item_category
表中的第二个字段是catid
。现在,我想要选择cart_item
中没有关联catid
为63的所有项目。
我无法弄清楚如何编写该查询。
我也只想展示食品。
所以这是我的查询的开始。
我知道这是不对的,因为我只是返回所有不等于63的记录。
我只想显示没有关联catid
为63的记录。
SELECT ci.pid, ci.itemref, ci.name, cic.catid
FROM cart_item ci
JOIN cart_item_category cic USING (itemref)
WHERE ci.isfood = 1 AND cic.catid != 63;
答案 0 :(得分:1)
这将是:
SELECT ci.pid, ci.itemref, ci.name
FROM cart_item ci
WHERE NOT EXISTS (select FROM cart_item_category cic
WHERE cic.itemref = ci.itemref
AND cic.catid = 63);