Zapytanie łączące dane z 3 tabel

0

Mam następujący schemat bazy:

Baza

Każdy lekarz ma listę raportów.
W raportach znajdują się informacje o pacjentach.
Dla danego lekarza potrzebuję wybrać informację dotyczącą listy pacjentów, którym wystawił raporty.

Przykład - jeżeli tabela raportów wygląda tak:

id_report id_doctor id_patient
1 1 1
2 1 1
3 1 2
4 1 2
5 1 3

To lekarz o id = 1 wystawiał raporty trzem pacjentom.
I dla każdego pacjenta potrzebuję pobrać pole personal_id_number z tabeli Patient oraz pola first_name, last_name z tabeli User.

Stworzyłem takie zapytanie (kierując się tym tematem)

select DISTINCT u.first_name, u.last_name, p.personal_id_number from report r, patient p, user u where r.doctor_id = p.doctor_id and p.user_id = u.id and r.doctor_id = 1

Czy takie zapytanie jest zrobione prawidłowo?
Jeśli nie - co robię źle?

1

Nie bardzo rozumiem dlaczego tabele patient łączysz po polu doctor_id z tabelą reports?
To chyba powinno być łączone po id_patient, czyli tak?

SELECT DISTINCT 
    u.first_name
    , u.last_name
    , p.personal_id_number 
FROM 
    report r
    patient p ON r.id_patient = p.id_patient
    USER u ON p.user_id = u.id
WHERE  
    r.doctor_id = 1
0

Dzięki - to był mój błąd.

select distinct u.first_name, u.last_name, p.personal_id_number
from report r
 join patient p on r.patient_id = p.id
 join user on p.user_id = u.id 
WHERE r.doctor_id = 1 

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0