免責聲明:我正在處理遺留數據庫,這個數據庫具有非常奇怪的模式。另外,我是一個完整的SQL noob,所以這也沒有幫助。如何在單個表中獲取MySQL中的笛卡爾積
基本上,我有一個表有產品變化。一個很好的例子可能是T恤。 「通用」T恤有一個產品ID。每種類型的變體(大小,顏色)都有一個id。變化的每個值(紅色,小)都有一個id。
所以表如下所示:
+----+----------+-----------+-------------+----------+------------+
| id | tshirt | option_id | option_name | value_id | value_name |
+----+----------+-----------+-------------+----------+------------+
| 1 | Zombies! | 2 | color | 13 | red |
| 1 | Zombies! | 2 | color | 24 | black |
| 1 | Zombies! | 3 | size | 35 | small |
| 1 | Zombies! | 3 | size | 36 | medium |
| 1 | Zombies! | 3 | size | 56 | large |
| 2 | Ninja! | 2 | color | 24 | black |
| 2 | Ninja! | 3 | size | 35 | small |
+----+----------+-----------+-------------+----------+------------+
我想寫獲取給定產品的不同組合查詢。在這個例子中,殭屍襯衫有紅/小,紅/中,紅/大,黑/小,黑/中,黑/大(六種不同)。忍者襯衫只有一個變化:黑/小。
我相信這是尺寸和顏色的笛卡爾產品。
這些ID實際上是其他表的外鍵,所以這些名稱/值不是爲了清晰起見而是想包括在內。
選項數量可能會有所不同(不限於兩個),每個選項的值數量也可能會有所不同。最終,這些數字可能對於特定產品來說很小,所以我並不擔心這裏有數百萬行。
關於我如何做到這一點的任何想法?
謝謝, p。
這樣做的技巧,雖然它似乎只處理兩個變量(在這種情況下大小/顏色)。儘管現在我需要弄清楚如何查找這些外鍵而不會泄露結果。謝謝! – philoye 2010-11-07 11:59:29