我有兩個實體Product(int id ID)
和Attribute(int id ID)
。每個產品可以具有多個具有自定義值的屬性,所以我有一個ProductAttribute(int product_id, int attribute_id, int value)
。選擇多對多關係
我想搜索的屬性1的值爲x,屬性2的值爲y和...。
這可能嗎?如何?或者我應該改變關係圖?
我使用MySQL 5.7,如果它很重要。
我有兩個實體Product(int id ID)
和Attribute(int id ID)
。每個產品可以具有多個具有自定義值的屬性,所以我有一個ProductAttribute(int product_id, int attribute_id, int value)
。選擇多對多關係
我想搜索的屬性1的值爲x,屬性2的值爲y和...。
這可能嗎?如何?或者我應該改變關係圖?
我使用MySQL 5.7,如果它很重要。
您可以使用聚集和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」爲被比較列表中的屬性的數量。
Tnx。這聽起來不錯,但我真正的問題是檢查跨度之間的「價值」。在這種情況下,正確的查詢是什麼? – vakarami
@vakarami。 。 。我回答後改變了問題。這太無禮了。它使答案無效,可以得出較低的評價。 –
添加一些示例表格數據和預期結果 - 作爲格式化文本。同時向我們展示您當前的查詢嘗試。 – jarlh