2017-07-21 162 views
1

我有兩個實體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

添加一些示例表格數據和預期結果 - 作爲格式化文本。同時向我們展示您當前的查詢嘗試。 – jarlh

回答

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」爲被比較列表中的屬性的數量。

+0

Tnx。這聽起來不錯,但我真正的問題是檢查跨度之間的「價值」。在這種情況下,正確的查詢是什麼? – vakarami

+0

@vakarami。 。 。我回答後改變了問題。這太無禮了。它使答案無效,可以得出較低的評價。 –