gpt4 book ai didi

MySQL - 连接三个表并显示数据(即使没有找到匹配项)

转载 作者:行者123 更新时间:2023-11-30 22:10:07 26 4
gpt4 key购买 nike

我有一个连接三个表的查询:

  1. 专业{id、名称、描述、图片}
  2. 医生 { id, name, description, photo }
  3. doc_spec { id, id_doc, id_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
    INNER JOIN
    specialties s
    ON
    ds.id_spec=s.id
    GROUP BY
    d.id

查询工作正常,可以使用连接其他两个表的 doc_spec 表从两个表中检索数据,但问题是当我的医生具有指定的专业时。

我该怎么做,而不是在 doc_spec 表上没有匹配项时不显示该行,而是无论如何检索在专业列上具有 NULL 值的行?如果可能而不是显示 null,如果它可以包含诸如“未指定专业”之类的值,那将是完美的。

更新

我找到了一种通过使用 RIGHT JOIN 和 LEFT JOIN 来做到这一点的方法,但我不确定这样做是否正确,我仍然希望能够保持像“没有指定专业”这样的值而不是 null。

    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

关于MySQL - 连接三个表并显示数据(即使没有找到匹配项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40345165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com