所以我在SQL中有點生疏,在這裏真的需要一些幫助 - 很好。MS Access SQL產品組合導出
我有一個基於MS Access的在線商店系統,我需要導出所有可能的產品變體。
我有一個表「VariantTypes」,其中包含所有需要的信息。 它看起來像這樣:
ProductFKID | VariantTypeFKID | VariantValueFKID | Surcharge
一個產品的數據是這樣的:
2 | 3 | 12 | 0,00 €
2 | 3 | 13 | 39,00 €
2 | 3 | 14 | 39,00 €
2 | 134 | 556 | 0,00 €
2 | 134 | 557 | 90,00 €
2 | 134 | 558 | 90,00 €
現在的新的進口我需要每一個可能的變型的組合,這應該是這樣的:
2 | 3 | 12 | 0,00 € | 134 | 556 | 0,00 €
2 | 3 | 12 | 0,00 € | 134 | 557 | 90,00 €
2 | 3 | 12 | 0,00 € | 134 | 558 | 90,00 €
2 | 3 | 13 | 39,00 € | 134 | 556 | 0,00 €
2 | 3 | 13 | 39,00 € | 134 | 557 | 90,00 €
2 | 3 | 13 | 39,00 € | 134 | 558 | 90,00 €
2 | 3 | 14 | 39,00 € | 134 | 556 | 0,00 €
2 | 3 | 14 | 39,00 € | 134 | 557 | 90,00 €
2 | 3 | 14 | 39,00 € | 134 | 558 | 90,00 €
當然,如果我有3種變異類型的一個產品,它應該工作一樣辦法。這樣做的最好的例子是:
與機身顏色黑色,白色,紅色和大小S,M,L ,我需要一個產品:
黑色 - S |黑 - M |黑 - L |白 - S |白 - M |白 - L |紅 - S | ...
我確定有一個簡單的方法可以解決這個問題,因爲我前一段時間在學校學到了它。我只是不記得如何。
感謝您的幫助提前!
映入眼簾, KaptainEaglu
UPDATE:
我設法創建下面的語句來創建笛卡爾積:
SELECT v1.ProductID,v1.Name,v1.Value ,v1.Surcharge,v2.Name,v2.Value,v2.Surcharge
FROM [smartstore] [DBO]。[smarstorevariants] V1
CROSS JOIN [smartstore] [DBO]。[smarstorevariants] V2
WHERE v1.ProductID = v2.ProductID AND v1.Name!= v2.Name
ORDER BY v1.ProductID遞減
但作爲一個結果,我沒有得到9個作爲組合的結果,但18 如:黑色-S,黑色-M,... 和S-黑色,S-白色,...
我知道,技術上ey是不同的組合,但對於我的商店出口他們是雙重組合。
關於如何解決這個問題的任何想法?
您在詢問*笛卡爾產品*;用CROSS JOIN運算符實現,沒有ON子句。 –
但ms-access不支持交叉連接,afaik? – KaptainEaglu
的「MS-SQL訪問交叉連接」首先谷歌搜索:http://stackoverflow.com/questions/1231676/how-to-use-cross-join-in-access –