你想
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;
但是您可能需要重新审视您的模式,因为列的数量越多,联合的数量就越多。