0

Clinic、、、Doctorおよびという3つのテーブルがありClinic_has_Doctorます。2つのテーブルがClinicありDoctor、フィールドがidありname、次のようになっているとします。

Clinic 
+----+------------------------+
| id | name                   |
+----+------------------------+

Doctor
+----+------------------------+
| id | name                   |
+----+------------------------+

そしてClinic_has_Doctor、クリニックと医師の間のマッピングを含む単純なテーブルです。

Clinic_has_Doctor
+-----------+-----------------+
| Clinic_id | Doctor_id       |
+-----------+-----------------+

Clinicこれは、DoctorIDへの外部キーであると予想されます。クリニックとそれに沿った医師のリストを入手する必要があります。だから私は次のようなテーブルを持っているでしょう:

+-----------+--------------+------------+--------------+
| Clinic_id | Clinic_name  | Doctor_id  | Doctor_name  |
+-----------+--------------+------------+--------------+

私はSQLコマンドをあまりJOIN実行していないので、これから抜け出すことができませんでした。何か助けはありますか?

4

2 に答える 2

4

JOIN使用して をテーブルClinic_has_Doctorに接続する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
于 2013-02-03T18:39:01.497 に答える
2

次のようになります。

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
于 2013-02-03T18:39:46.013 に答える