代码之家  ›  专栏  ›  技术社区  ›  varman

mysql中的行值应该是逐个的

  •  1
  • varman  · 技术社区  · 8 年前

    我陷入了mysql的一个特殊点我有三张桌子,每个都有外键关系三个领域 标题顺序 桌子是 gt1、gt2和gt3 这表明 p1、p2和p3 属于 百分比 分别是表我需要 滴定顺序和百分比 应以正确的格式逐个显示我试着参考了很多教程,但失败了。

    我画了一张图,显示了应该是什么样的表如果有人知道,请回答。

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

    enter image description here

    1 回复  |  直到 8 年前
        1
  •  1
  •   skelwa    8 年前

    你想 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;
    

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