标题表与其他表格内容

时间:2015-08-01 10:01:46

标签: 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

我不知道如何加入2个表来创建此结果

我试过但没有......

:)

1 个答案:

答案 0 :(得分:0)

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

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有多个值的情况。