这是样本产品属性表
product_id property_id property_value
5 1 white
5 2 50
5 3 50
5 4 55
5 5 mm
6 8 cm
我希望动态过滤我的产品。例如:
select property_id 1 and property_value white
AND
select property_id 2 and property_value 50
AND
select property_id 4 and property_value 55
AND
etc ...
我可以从基本查询中进行动态查询。当我一起使用所有条件时,没有匹配的记录,因为所有条件运算符都是AND。什么是最好的查询? 谢谢你的回答。
答案 0 :(得分:1)
听起来你正在使用错误的关键字。在标准集之间使用OR
代替AND
:
SELECT DISTINCT product_id
FROM product_properties
WHERE
(property_id = 1 and property_value = 'white')
OR
(property_id = 2 and property_value = '50')
OR
(property_id = 4 and property_value = '55')
OR
etc ...
如果您只想要符合各种条件的每个DISTINCT
中的一个,则可以使用product_id
,或者将其留下以便为每个匹配的行获取一个。