MYSQL - 返回产品选项变体

时间:2013-11-12 21:31:48

标签: mysql select product variants

我正在将产品选项数据转移到更高效的新表中。

我已经创建了新表:

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

对于新产品,使用Arrays和Cartesian在Javascript中很容易做到这一点。但我希望使用MYSQL来移动数据。它不必高效,因为我将运行此脚本一次。

所以我想说我有以下数据:

选项:

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

但是要将它们放在varient值表中,我真的只需要将它们组合在一起,如:

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"

但我不知道如何创建一个查询来给我所有组合..

1 个答案:

答案 0 :(得分:0)

你需要:

Products: ID   /  ProductName

Options:  ID  / Option_Text

Values:   ID  / Options_ID  / Value_text

Product_option: ProductID / OptionID / ValueID