选择多对多的关系

时间:2017-07-21 11:56:55

标签: mysql sql entity-relationship

我有两个实体Product(int id ID)Attribute(int id ID)。每个产品都可以有多个具有自定义值的属性,因此我有一个ProductAttribute(int product_id, int attribute_id, int value)

我想搜索属性为1,值为x,属性为2,值为y和......的商品。

这可能吗?如何?或者我应该更改关系图吗?

如果重要的话我会使用MySQL 5.7。

1 个答案:

答案 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”是要比较的列表中的属性数。