gpt4 book ai didi

MySQL - 组合/枢轴

转载 作者:行者123 更新时间:2023-11-30 23:28:02 25 4
gpt4 key购买 nike

我有一个与这个非常相似的问题:
How to pivot a MySQL entity-attribute-value schema
或者这个
Enumerating combinations via SQL

我有两个表:

变化

ID | item_id | name
=================================
1 | 1 | color
2 | 1 | size
3 | 1 | material
4 | 1 | lenght
==================================

变异数据

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
==================================


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

一些测试数据

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

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

关于MySQL - 组合/枢轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12174980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com