mysql - 标题表与其他表格内容

标签 mysql

CARATTERISTICA_SOTTOOGGETTO:

idT valore fkIdCaratteristica fkIdSottooggetto

 1    8          2                  1
 2   rosso       3                  1
 3    6          2                  2
 4   nero        3                  2
 5   100         4                  2
 6   150         4                  1

CARATTERISTICA:

idT    nome    unitaMisura 

 2     lama        cm
 3     colore    colore
 4     Peso        kg

我喜欢拥有

fkIdSottooggetto lama   colore   peso

        1         8     rosso    150
        2         6     nero     100

我不知道如何连接两个表来创建此结果

我尝试过,但没有任何结果......

:)

最佳答案

您尝试做的事情称为“旋转”。在您的情况下,我仅使用第二个表作为如何显示第一个表的结果的提示。查询本身不需要它。

SELECT fkIdSottooggetto,
 MAX(CASE WHEN fkIdCaratteristica=2 THEN valore END) lama,
 MAX(CASE WHEN fkIdCaratteristica=3 THEN valore END) colore,
 MAX(CASE WHEN fkIdCaratteristica=4 THEN valore END) peso
FROM CARATTERISTICA_SOTTOOGGETTO
GROUP BY fkIdSottooggetto

请参阅此处 demo .

在我的解决方案中,我选择 max() 来聚合每个特征的分组值。在您的应用程序中,您可能希望获得这些值的min 值或sum。但这仅适用于表中每个 fkIdSottooggettofkIdCaratteristica 存在多个值的情况。

关于mysql - 标题表与其他表格内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31760604/

相关文章:

php - Gmail 搜索怎么这么快?

java - 将 SQL 集成到 Java 中的 Web 服务

mysql - 获取 MySQL/MariaDB 关系表中给定父节点的所有子节点(及其子节点)

mysql - 如何选择不参与连接的记录

php - Laravel eloquent 与查询构建器的优缺点

mysql - 错误 1064 (42000) : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax?

php - MySQL/PHP,ForEach 循环缓慢

mysql - 如何让 pt-upgrade(Percona 工具包)在数据库上进行上下文切换

php - mysql查询速度优化

php - 删除记录并计算行数以检查结果