我有三个表:
表1 tipo_producto
id_tipo_producto nombre
1 Teléfono
2 Pendrive
3 Cargador
表2特性
id_caracteristicas nombre
1 Memoria
2 Camara
表3 caracteristicas_tipo_producto
id_tipo_producto id_tipo_caracteristica
1 1
1 2
2 1
我想要这样的结果查询:
id_tipo_producto nombre caracteristica
1 Teléfono Memoria|Camara
2 Pendrive Memoria
3 Cargador Null or Empty
我有这个查询,但结果中没有“Cargador”:
SELECT tp.id_tipo_producto, tp.nombre, GROUP_CONCAT(c.nombre ORDER BY c.nombre DESC SEPARATOR '|') AS caracteristicas
FROM caracteristica c
INNER JOIN caracteristicas_tipo_producto ctp ON ctp.id_caracteristica = c.id_caracteristica
INNER JOIN tipo_producto tp ON ctp.id_tipo_producto = tp.id_tipo_producto
GROUP BY ctp.id_tipo_producto
最佳答案
使用左连接代替内连接
SELECT tp.id_tipo_producto, tp.nombre, GROUP_CONCAT(c.nombre ORDER BY c.nombre DESC SEPARATOR '|') AS caracteristicas
FROM tipo_producto tp left JOIN caracteristicas_tipo_producto ctp
on ctp.id_tipo_producto = tp.id_tipo_producto
left join caracteristica c ON ctp.id_caracteristica = c.id_caracteristica
GROUP BY ctp.id_tipo_producto,tp.nombre
关于mysql - 显示三个表的所有记录,即使第一个表中的记录不在第二个或第三个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55181712/