我不確定我是否正確表達了這個問題,請隨時糾正我。以下是他們的數據表:如何選擇在其他表中具有全部或無相應值的行?
product category category_product
------- -------- ----------------
id_product id_category active id_category id_product
1 1 1 1 1
2 2 1 2 1
3 3 0 1 2
4 0 2 2
3 2
3 3
4 3
我只需要選擇那些產品,其中有所有類別爲無效。 例如:
- 產品
1
是好的,因爲它屬於活性類別(1
,2
)。 - 產品
2
是良好的,因爲它具有至少一個活性類別(1
,2
;3
- 不活動) - 產品
3
必須選擇,因爲它的所有類別是不活動的(3
,4
)。
我有以下查詢,這顯然是不正確的,因爲它會選擇這兩種產品:2
和3
:
SELECT p.id_product
FROM product p
JOIN category_product cp
ON p.id_product = cp.id_product
JOIN category c
ON c.id_category = cp.id_category
WHERE
c.active = 0;
這裏是SQL小提琴:http://sqlfiddle.com/#!2/909dd/2/0
我怎樣才能解決這個問題?
這是一個很好的答案!我比其他人更喜歡它,因爲它不包含嵌套的'select',並提供有關產品的額外信息。 –