两张桌子
1) product
--------------------
id | Name | price
1 | p1 | 10
2 | p2 | 20
3 | p3 | 30
2) product_attributes
:
---------------------------------------------------
id | product_id | attribute_name | attribute_value
---------------------------------------------------
1 | 1 | size | 10
2 | 1 | colour | red
3 | 2 | size | 20
我需要加入这两个表。在where子句中我需要匹配两者 两行属性值。是否可以基于两行获得结果 值。根据用户选择,我需要显示符合条件的所有产品。如果size = 10且color = red。
输出应为
1 | p1 | 10
获取此查询可能会非常有帮助。
答案 0 :(得分:2)
select p.* from product p
join (select a1.product_id id from product_attributes a1 join product_attributes a2 using (product_id)
where a1.attribute_name = 'size' and a1.attribute_value = '10'
and a2.attribute_name = 'colour' and a2.attribute_value = 'red') pa
using (id)
如果需要匹配更多属性,只需在子查询中添加更多连接。