我想弄清楚产品和产品属性之间的关系 . 我有一个 product
表和一个 product_attributes
表 . 产品可以有多个属性 . 我需要一个查询来查找具有一个特定属性和另一个特定属性的所有产品 . 例如 . 带有attribute_value_id的产品"1"此产品还必须具有attribute_value_id IN(2,3,4)
我以为这会做到,但它没有:
SELECT DISTINCT p.product_id
FROM `product` p
JOIN `product_attribute` pa ON (p.product_id = pa.product_id)
WHERE pa.attribute_value_id = 1 AND pa.attribute_value_id IN(2, 3, 4)
产品
PRODUCT_ID
product_attribute
product_id | attribute_id | attribute_value_id
attribute_id是属性组(例如颜色,性别)attribute_value_id是特定值(例如蓝色,男性,女性)
换句话说,我需要所有蓝色或红色的产品 .
有什么建议?先感谢您 . 任何帮助赞赏 .
1 回答
可能有点晚了,但我猜迟到总比没有好:p
subquery
选择condition 1
或condition 2
匹配的记录 . 如果产品符合这两个条件,则结果中将显示2行 .outer query
对结果执行count()
并检查count = 2
,输出不同的product
,其中匹配2个条件 .