Php MySQL:连接三个表并连接分组结果
我有以下三个表格“医生”、“专业”和“医生专业”:Php MySQL:连接三个表并连接分组结果,php,mysql,database,Php,Mysql,Database,我有以下三个表格“医生”、“专业”和“医生专业”: doctors -id -doctor_name specialities -id -speciality_name doctor_specialities -id -doctor_id -speciality_id 我想返回所有医生及其专业名称和专业id。一名医生可以有多个专业 结果集应类似于: id | doctor_name | speciality_id |
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
但在本例中,我得到的是一个单独的特性。您要查找的是一个调用的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
模式和查询您要查找的是一个名为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
Schema and query on1 select,with 2 join如果我不太清楚,我会说这是家庭作业。我希望任何教这门课的人都不会教人们这样设置表。我认为db表结构看起来很合适@DarylB,你认为它有什么问题吗?1 select,对于2个join,如果我不知道更多,我会说这是作业。我希望任何教这门课的人都不会教人们这样设置表。我认为db表结构看起来很合适@DarylB,你认为它有什么问题?