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
。但这仅适用于表中每个 fkIdSottooggetto
和 fkIdCaratteristica
存在多个值的情况。
关于mysql - 标题表与其他表格内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31760604/