在mysql中,行值应该是一个接一个的

在mysql中,行值应该是一个接一个的,mysql,Mysql,我陷入了mysql的一个特殊点。我有三个表,每个表都有外键关系。标题顺序表格的三个字段分别为gt1、gt2和gt3,分别表示百分比表格的p1、p2和p3。我需要标题顺序和百分比的每个数据都应以正确的格式逐个显示。我试着参考了很多教程,但都失败了 我画了一幅图,显示了预期的表格。如果有人知道,请回答 注意:三个表的数据是动态的 您正在尝试取消PIVOT数据。但不幸的是,MySQL没有任何功能,因此您需要使用union-all或union(取决于您的数据集)查询来复制它 下面的查询应该适合您 SEL

我陷入了mysql的一个特殊点。我有三个表,每个表都有外键关系。标题顺序表格的三个字段分别为gt1、gt2和gt3,分别表示百分比表格的p1、p2和p3。我需要标题顺序和百分比的每个数据都应以正确的格式逐个显示。我试着参考了很多教程,但都失败了

我画了一幅图,显示了预期的表格。如果有人知道,请回答

注意:三个表的数据是动态的


您正在尝试
取消PIVOT
数据。但不幸的是,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;

但您可能希望重新审视您的模式,因为列的数量越多,联合就越多。

显示您的代码:到目前为止您尝试了什么?您运行的查询是什么,得到的结果是什么?到目前为止,这是一个“为我写一个查询”的请求,这里没有人会这样做answer@LelioFaieta我不知道如何开始,给我一个小提示,我将编码并发布在这里,现在我尝试使用
案例当。。。然后。。。结束
,这是一个起点吗?试着用mysqlserver查看pivot表通常,枚举列名是设计不佳的症状。您可能需要重新思考您的模式。@I可以理解,我更改了模式。多谢各位