mysql - 行值在 MySQL 中应该是一个一个的

标签 mysql

我被困在 MySQL 的一个特定点上。我有三个表,每个表都有外键关系。 TitleOrder表的三个字段是gt1、gt2和gt3,分别表示Percentage表的p1、p2和p3分别。我需要 TitleOrder 和 Percentage 的每个数据都应该以正确的格式一一显示。

我画了一张图片,显示了预期的表格。

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

enter image description here

最佳答案

您正在尝试UNPIVOT 数据。但不幸的是,MySQL 没有任何功能,因此您需要使用 union allunion(取决于您的数据集)查询来复制它。

下面的查询应该适合你。

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/

相关文章:

php - MySQL 对可能不返回任何内容的查询的错误处理

mysql - 连接 Codeigniter 表中最后插入的数据/值

java - Hibernate不将我的记录保存在数据库中,但主键会递增

mysql - 如果多个列在 MySQL 查询中等于某个值,如何返回 true 或 false?

mysql - 当有锁时等待读取一行——事务隔离

PHP MySQL 自动完成

mysql - 是否可以根据输入参数之一来决定 SQLWhere 子句的条件?

windows - 使用 mysqldump 时如何将备份文件重定向到另一个文件夹/驱动器?

MySQL `INSERT INTO SELECT` 子句在唯一字段上生成重复条目错误

mysql - SQL:如何从多行中选择满足多个条件的单个id