我被困在 MySQL 的一个特定点上。我有三个表,每个表都有外键关系。 TitleOrder表的三个字段是gt1、gt2和gt3,分别表示Percentage表的p1、p2和p3分别。我需要 TitleOrder 和 Percentage 的每个数据都应该以正确的格式一一显示。
我画了一张图片,显示了预期的表格。
注意:三张表的数据是动态的
最佳答案
您正在尝试UNPIVOT
数据。但不幸的是,MySQL 没有任何功能,因此您需要使用 union all
或 union
(取决于您的数据集)查询来复制它。
下面的查询应该适合你。
SELECT
s.surveyId, s.surveyName, t.gt, t.p
FROM
survey s
JOIN
(SELECT
gt1 AS gt, p1 AS p, t.surveyId
FROM
TitleOrder t JOIN Percentage p on t.titleOrderId = p.titleOrderId
UNION ALL
SELECT
gt2 AS gt, p2 AS p, t.surveyId
FROM
TitleOrder t JOIN Percentage p on t.titleOrderId = p.titleOrderId
UNION ALL
SELECT
gt3 AS gt, p3 AS p, t.surveyId
FROM
TitleOrder t JOIN Percentage p on t.titleOrderId = p.titleOrderId
) t ON t.surveyId = s.surveyId
ORDER BY s.surveyId , t.surveyId;
但您可能希望重新审视您的模式,因为列数更多,联合更多。
关于mysql - 行值在 MySQL 中应该是一个一个的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51474224/