MySQL-连接三个表并显示数据(即使没有找到匹配项)
我有一个连接三个表的查询:MySQL-连接三个表并显示数据(即使没有找到匹配项),mysql,join,Mysql,Join,我有一个连接三个表的查询: 专业{id,名称,描述,图像} 医生{id、姓名、描述、照片} 文档规格{id,id\u doc,id\u spec} SELECT d.id, d.name, d.description, d.photo, GROUP_CONCAT(s.name SEPARATOR ', ') AS 'specialty' FROM doc_spec ds INNER JOIN doctors d ON ds.id_doc=d.id
SELECT
d.id,
d.name,
d.description,
d.photo,
GROUP_CONCAT(s.name SEPARATOR ', ') AS 'specialty'
FROM
doc_spec ds
INNER JOIN
doctors d
ON
ds.id_doc=d.id
INNER JOIN
specialties s
ON
ds.id_spec=s.id
GROUP BY
d.id
SELECT
d.id,
d.name,
d.description,
d.photo,
GROUP_CONCAT(s.name SEPARATOR ', ') AS 'specialty'
FROM
doc_spec ds
RIGHT JOIN
doctors d
ON
ds.id_doc=d.id
LEFT JOIN
specialties s
ON
ds.id_spec=s.id
GROUP BY
d.id
我认为这应该起作用:
SELECT
d.id,
d.name,
d.description,
d.photo,
IFNULL(GROUP_CONCAT(s.name SEPARATOR ', '), 'No specialities') AS 'specialty'
FROM
doc_spec ds
RIGHT JOIN
doctors d
ON
ds.id_doc=d.id
LEFT JOIN
specialities s
ON
ds.id_spec=s.id
GROUP BY
d.id
您是否尝试过使用
左侧外部联接
而不是内部联接
?仅使用左侧不起作用,但如果我同时使用右侧和左侧都起作用,谢谢。是的,没有看到您从文档规格
开始。很好。从左到右对数据进行排序,最左边是主数据,下面的所有数据都不太重要。所以你只剩下连接了。如果数据是必需的,则执行内部联接;如果可选,则使用外部联接。看起来你的问题是,你有你最需要的数据,而不是在表排序中的左上角或右上角。我明白了,@DanFromGermany。谢谢,为什么是-1?你能告诉我吗?你好,@vookash,它工作得很好这正是我要找的。谢谢至于-1不是我。我很高兴我能帮上忙:)