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