我有一個PRODUCTS
表,每個產品可以有多個屬性,所以我有一個ATTRIBUTES
表和另一個名爲ATTRIBPRODUCTS
的表位於中間。這些屬性按類別(類型,品牌,材料,顏色等)分組,因此人們可能需要特定品牌的特定類型的產品。實現此SQL查詢的最佳方式是什麼?
PRODUCTS
product_id
product_name
ATTRIBUTES
attribute_id
attribute_name
attribute_class
ATTRIBPRODUCTS
attribute_id
product_id
當某人正在尋找一種產品,他們可以選擇一個或多個屬性。我遇到的問題是返回具有多個屬性的單個產品。這應該是非常簡單的我知道,但SQL真的不是我的事情,並且在邏輯上我有點失落了。問題是我想檢查每個屬性類分開,所以我想是這樣結束了:
SELECT DISTINCT products.product_id
FROM attribproducts
INNER JOIN products ON attribproducts.product_id = products.product_id
WHERE (attribproducts.attribute_id IN (9,10,11)
AND attribproducts.attribute_id IN (60,61))
我已經用在不同類別的屬性的塊分開的,所以我結束了特定類型的產品,以及某些品牌的產品。從我得到的結果看來,導致問題的IN語句之間似乎是這樣。
任何人都可以幫忙嗎?不幸的是,我沒有完全重構數據庫的好處,除此之外還有很多其他的東西,所以對於如何使用我所擁有的東西的任何建議都會感激不盡。
但這看起來非常相似 - 一個很好的反正起點。感謝所有回答的人 – Dave 2009-06-29 12:25:41