Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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_Pivot_Combinations - Fatal编程技术网

MySQL-组合/透视

MySQL-组合/透视,mysql,pivot,combinations,Mysql,Pivot,Combinations,我有一个问题与此非常相似: 还是这个 我有两张桌子: 变化 变异系数 名称和值是用户输入。每个项目最多有4个变体,每个变体有n个值 一些测试数据 预期结果: 不幸的是,我无法解决这个问题。 我希望你能给我一个提示。 谢谢你的支持 我可以向你建议这个问题- SELECT v.item_id, GROUP_CONCAT(IF(v.name = 'color', vd.val, NULL)) color, GROUP_CONCAT(IF(v.name = 'size', vd.val,

我有一个问题与此非常相似:

还是这个

我有两张桌子:

变化 变异系数
名称和值是用户输入。
每个项目最多有4个变体,每个变体有n个值

一些测试数据 预期结果:
不幸的是,我无法解决这个问题。
我希望你能给我一个提示。


谢谢你的支持

我可以向你建议这个问题-

SELECT v.item_id,
  GROUP_CONCAT(IF(v.name = 'color', vd.val, NULL)) color,
  GROUP_CONCAT(IF(v.name = 'size', vd.val, NULL)) size,
  GROUP_CONCAT(IF(v.name = 'material', vd.val, NULL)) material,
  GROUP_CONCAT(IF(v.name = 'length', vd.val, NULL)) length
FROM variations v
  JOIN variation_data vd
    ON vd.variation_id = v.id
GROUP BY v.item_id

它不会返回所需的结果,但会“旋转”。

如何获得结果?
ID | variation_id | value
=================================
 1 | 1            | red
 2 | 1            | white
 3 | 1            | black
 4 | 2            | s
 5 | 2            | m
 6 | 3            | cotton
 7 | 4            | 100
==================================
CREATE TABLE variations ( id int PRIMARY KEY, item_id int, name varchar(50));
INSERT INTO variations (id, item_id, name) 
VALUES (1, 1, 'color'),
       (2, 1, 'size'),
       (3, 1, 'material'),
       (4, 1, 'length');

CREATE TABLE variation_data ( id int PRIMARY KEY, variation_id int, val varchar(50));
INSERT INTO variation_data (id, variation_id, value) VALUES
  (1, 1, 'red'),
  (2, 1, 'white'),
  (3, 1, 'black'),
  (4, 2, 's'),
  (5, 2, 'm'),
  (6, 3, 'cotton'),
  (7, 4, '100');
red     S   cotton  100
red     M   cotton  100
white   S   cotton  100
white   M   cotton  100
black   S   cotton  100
black   M   cotton  100
SELECT v.item_id,
  GROUP_CONCAT(IF(v.name = 'color', vd.val, NULL)) color,
  GROUP_CONCAT(IF(v.name = 'size', vd.val, NULL)) size,
  GROUP_CONCAT(IF(v.name = 'material', vd.val, NULL)) material,
  GROUP_CONCAT(IF(v.name = 'length', vd.val, NULL)) length
FROM variations v
  JOIN variation_data vd
    ON vd.variation_id = v.id
GROUP BY v.item_id