2011-05-17 86 views
1

我有一個看起來像這樣的SQL數據庫:enter image description hereSQL產品組合

有了這個數據庫...

如果我有一個產品,說棉襯衫和這款產品在三種選擇,說大小,顏色和長或短袖。

從我的CMS我說該產品是在以下條件:
大 - 白色 - 長袖
大 - 綠色 - 長袖
大 - 綠色 - 短袖
小 - 白色 - 長袖

因此,在我的網站的前端(使用Javascript),我可以說當選中Large時,啓用白色&綠色複選框。但是,當小被選中,我只需要啓用白複選框等

理想的結果應該是這樣的:
依賴性[「大」] = [白,綠]
依賴性['大,白'] = [長袖]
依賴性[' 綠色大 '] = [長袖,短袖]
依賴性[' 小 '] = [白]
依賴性[' 白色小'] = [長袖子]

SQL看起來可能會達到什麼樣的結果?

非常感謝任何幫助
謝謝

回答

1

一個選項被選擇的每個時間,而不是做一個查詢,你可以使用JavaScript來修改可用的選項。因此,您的初始查詢只會以數組,XML或JSON的形式返回產品的所有數據,然後您可以根據需要過濾客戶端。

select * --replace the * with the fields you actually want 
from Product p 
left outer join Option o on p.Id = o.ProductId 
left outer join OptionValue ov on o.id = ov.OptionId 
left outer join CombinationDetail cd on ov.Id = cd.OptionValueId 
left outer join Combination c on cd.CombinationId = c.Id 
+0

這正是我打算做的......我需要一個查詢來打印出所有可用的組合。然後,我將使用Javascript修改頁面上的可用選項。不過,我被困在SQL查詢部分 – Leigh 2011-05-17 18:18:19

+0

@Leigh上面;我使用了'LEFT JOINs',因爲不知道所有產品是否有選項或者...都相應地修改。 – RedFilter 2011-05-17 18:22:41

+0

感謝您的迴應,但您的SQL只是返回產品的選項。我需要每個選項的依賴關係,如我在上面的文章中所述。用你的SQL我怎麼知道小襯衫只有白色纔可用? – Leigh 2011-05-17 18:33:17