首先,我不是SQL专家,所以可能我错过了一些括号或其他简单愚蠢的东西; - )
任何人都可以告诉我为什么这样做并返回4行:
SELECT ppa.products_id FROM products_propattributes ppa
WHERE ( (options_id = "11" AND options_values_id = "18")
OR (options_id = "4" AND options_values_id = "4") )
而且这个没有,虽然它应该匹配1行:
SELECT ppa.products_id FROM products_propattributes ppa
WHERE ( (options_id = "11" AND options_values_id = "18")
AND (options_id = "4" AND options_values_id = "4") )
任何帮助都将受到高度赞赏! 提前谢谢..
BAS
答案 0 :(得分:3)
在第二个查询中,您只有AND
个,因此options_id = "11"
和options_id = "4"
都不可能匹配。
当然与options_values_id = "18"
和options_values_id = "4"
相同。
答案 1 :(得分:2)
查找options_id = "11"
AND options_id = "4"
行的第二个查询。这是不可能的,因为options_id
列云只有一个值。
答案 2 :(得分:2)
因为每行中的列中只能有一个可能的值。如果您希望使用ID
OR
SELECT ppa.products_id
FROM products_propattributes ppa
WHERE (options_id = "11" AND options_values_id = "18") OR
(options_id = "4" AND options_values_id = "4")
GROUP BY ppa.products_id
HAVING COUNT(*) = 2