gpt4 book ai didi

php - MySQL:加入三个表并连接分组结果

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:34 24 4
gpt4 key购买 nike

我有以下三个表 'doctors' 、'specialities' 和 'doctor_specialities':

doctors 
-id
-doctor_name

specialities
-id
-speciality_name

doctor_specialities
-id
-doctor_id
-speciality_id

我想返回所有医生以及他们的专业名称和专业 ID。一个医生可以有多个专业。

结果集应该是这样的:

id       |       doctor_name       |       speciality_id       |       speciality_name
--------------------------------------------------------------------------------------
1 | John | 5,3 | Speciality1,Speciality2
3 | Tim | 3 | Speciality2
6 | David | NULL | NULL

我尝试了以下查询:

SELECT d.id ,d.doctor_name, s.speciality_name, s.id
AS speciality_id
FROM api_doctors d
LEFT JOIN api_doctor_specialities ds
ON ds.doctor_id = d.id
LEFT JOIN api_specialities s
ON s.id = ds.speciality_id
GROUP BY d.id

但在这种情况下,我得到的是单一专业。

最佳答案

您正在寻找的是一个名为 GROUP_CONCAT 的 MySQL 函数,它返回一个连接的结果或 NULL。默认分隔符是逗号,因此该查询的结果应该与您想要的结果集相匹配。

SELECT d.id, d.doctor_name, GROUP_CONCAT(s.speciality_name) AS speciality_name, GROUP_CONCAT(s.id) AS speciality_id
FROM api_doctors d
LEFT JOIN api_doctor_specialities ds
ON ds.doctor_id = d.id
LEFT JOIN api_specialities s
ON s.id = ds.speciality_id
GROUP BY d.id

关于 SQL Fiddle 的架构和查询

关于php - MySQL:加入三个表并连接分组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36587292/

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