製品オプション データを新しいより効率的なテーブルに移動中です。
新しいテーブルを作成しました:
Options: ID / Product_ID / Option_Text
Values: ID / Options_ID / Value_text
そして、すべてのレガシー オプションをこれらの表にまとめました。私の大きなハードルは、バリアント テーブルのデータを作成することです。
Variants: ID / Product_ID / Price / SKU
Variant_Values: ID / Options_ID / Variants_ID
これは、新しい製品の配列とデカルトを使用して Javascript で簡単に実行できます。しかし、MYSQL を使用してデータを移動しようとしています。このスクリプトは 1 回実行するだけなので、効率的である必要はありません。
したがって、次のデータがあるとしましょう。
オプション:
36 | 100 | Color
37 | 100 | Size
38 | 100 | Logo
値:
72 | 36 | Blue
73 | 36 | Red
74 | 37 | Large
75 | 37 | Med
76 | 37 | Small
77 | 38 | Shark
78 | 38 | Unicorn
したがって、新しいバリアント値テーブルでは、次のようにすべてのオプションを組み合わせる必要があります。
BLUE - LARGE - SHARK
BLUE - LARGE - UNICORN
BLUE - MED - SHARK
しかし、それらをさまざまな値のテーブルに入れるには、次のようにグループ化するだけで済みます。
72 | 1
74 | 1
77 | 1
72 | 2
74 | 2
78 | 2
72 | 3
75 | 3
77 | 3
それで、その最終テーブルを得るために実行できるクエリはありますか?
次のようなものを実行すると:
SELECT (v.id), v.`Value_text`, o.`Option_Text`
FROM `Values` AS v
JOIN `Options` AS o ON o.`id` = v.`Options_ID ` AND o.`Product_ID` = 162961
GROUP BY o.`id`;
私は次のようなものを得ます:
"72" "Blue" "Color"
"74" "Large" "Size"
"77" "Shark" "Logo"
しかし、クエリを作成してすべての組み合わせを取得する方法がわかりません..