这是我在这里的第一个问题。我搜索了很多文档,但找不到答案。
我有 3 张桌子。
product_main(with idx and name)<br />
proudct_attributes (with idx 'pid gid value)<br />
product_attributes_groups (with idx name) <br />
现在我尝试按属性过滤产品。我对单个属性没有问题,但是我无法使用多个条件进行过滤,即(红色或蓝色,但只有新的)
SELECT `pid` FROM `product_attributes`
LEFT JOIN `product_main` ON `product_attributes`.`pid` = `product_main`.`idx`
LEFT JOIN `product_attributes_groups` ON `product_attributes`.`gid` = `product_attributes_groups`.`idx`
WHERE
(
(`product_attributes_groups`.`name` = 'color' AND `product_attributes`.`value` ='red' )
OR
(`product_attributes_groups`.`name` = 'color' AND `product_attributes`.`value` ='blue' )
)
AND
(`product_attributes_groups`.`name` = 'condition' AND `product_attributes`.`value` ='new' )
编辑:
这有帮助:选择pm
. idx
从product_attributes
as pa
join
product_main
as pm
on pa
。pid
= pm
。idx
加入
。product_attributes_groups
_ pig
_ = 。
分组。
有 sum( . = 'color' AND . in ('red' , 'blue')) > 0 和 sum( . = 'condition' AND . ='used') > 0;pa
gid
pig
idx
pm
idx
pig
name
pa
value
pig
name
pa
value
戈登的回答,稍作编辑。