CARATTERISTICA SOTTO OGGETTO:

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

加勒比海:
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有多个值的情况下才有意义。

10-06 12:38