[英]MySQL three-table join
我有三个表,分别称为Clinic
, Doctor
和Clinic_has_Doctor
。 假设两个表Clinic
和Doctor
字段id
和name
如下:
Clinic
+----+------------------------+
| id | name |
+----+------------------------+
Doctor
+----+------------------------+
| id | name |
+----+------------------------+
Clinic_has_Doctor
是一个简单的表,其中包含诊所和医生之间的映射:
Clinic_has_Doctor
+-----------+-----------------+
| Clinic_id | Doctor_id |
+-----------+-----------------+
预期是Clinic
和Doctor
ID的外键。 我需要获得诊所和沿途医生的名单。 所以我会有一张像这样的表:
+-----------+--------------+------------+--------------+
| Clinic_id | Clinic_name | Doctor_id | Doctor_name |
+-----------+--------------+------------+--------------+
我没有做太多的JOIN
SQL命令,所以我无法摆脱这个问题。 有什么帮助吗?
您将需要使用Clinic_has_Doctor
JOIN
表以将Clinic
连接到Doctor
表:
select c.id ClinicId,
c.name ClinicName,
d.id DoctorId,
d.name Doctor_name
from clinic c
inner join Clinic_has_Doctor cd
on c.id = cd.clinic_id
inner join doctor d
on cd.Doctor_id = d.id
如果您需要学习JOIN
语法的帮助,那么这里是有关联接的直观说明
我在查询中使用了INNER JOIN
,它将返回所有Clinics
以及与之关联的医生。
如果即使没有关联的医生也要返回Clinics
列表,则可以使用LEFT JOIN
:
select c.id ClinicId,
c.name ClinicName,
d.id DoctorId,
d.name Doctor_name
from clinic c
left join Clinic_has_Doctor cd
on c.id = cd.clinic_id
left join doctor d
on cd.Doctor_id = d.id
应该是这样的:
select clinic_has_doctor.clinic_id
, clinic.clinic_name
, clinic_has_doctor.doctor_id
, doctor.doctor_name
from clinic_has_Doctor
join clinic
on clinic.id=clinic_has_Doctor.clinic_id
join doctor
on doctor.id=clinic_has_Doctor.doctor_id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.