我有两个实体Product(int id ID)
和Attribute(int id ID)
。每个产品都可以有多个具有自定义值的属性,因此我有一个ProductAttribute(int product_id, int attribute_id, int value)
。
我想搜索属性为1,值为x,属性为2,值为y和......的商品。
这可能吗?如何?或者我应该更改关系图吗?
如果重要的话我会使用MySQL 5.7。
答案 0 :(得分:3)
您可以使用聚合和having
:
select product_id
from ProductAttribute
where (attribute_id, value) in ( (1, 2), (2, 3), (3, 4))
group by product_id
having count(*) = 3;
“3”是要比较的列表中的属性数。