Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL-返回产品选项变体_Mysql_Select_Product_Variants - Fatal编程技术网

MYSQL-返回产品选项变体

MYSQL-返回产品选项变体,mysql,select,product,variants,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 对于新产品,使用数组

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

我已经创建了新表:

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来移动数据。它不必是高效的,因为我将运行这个脚本一次

假设我有以下数据:

选项:

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"
我得到的结果是:

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"
但是我不知道如何创建一个查询来提供所有的组合

您需要:

Products: ID   /  ProductName

Options:  ID  / Option_Text

Values:   ID  / Options_ID  / Value_text

Product_option: ProductID / OptionID / ValueID

这不起作用,因为1:选项与产品相关,不是全局的。2:每种型号都有不同的价格。因此,大的成本比小的成本高。