0

製品オプション データを新しいより効率的なテーブルに移動中です。

新しいテーブルを作成しました:

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"

しかし、クエリを作成してすべての組み合わせを取得する方法がわかりません..

4

1 に答える 1

0

必要がある :

Products: ID   /  ProductName

Options:  ID  / Option_Text

Values:   ID  / Options_ID  / Value_text

Product_option: ProductID / OptionID / ValueID
于 2013-11-12T21:44:45.060 に答える