连接从多个行值中选择?

时间:2012-12-02 04:19:46

标签: mysql sql

两张桌子

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

获取此查询可能会非常有帮助。

1 个答案:

答案 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)

如果需要匹配更多属性,只需在子查询中添加更多连接。