Od appointmnent_id jest podstawowym kluczem Appointment , ta tabela ma 1:N związek ze wszystkimi 6 tabelami.
Dzieje się tak, gdy połączenie z tymi 6 tabelami spowoduje powstanie wielu wierszy ze zduplikowanymi danymi , to jest jak Cartesian Product . Na przykład if (tylko dla jednego id=46 ), są:
- 3 wiersze dla
PatientInvestigation - 6 wierszy dla
PatientTreatmentMedicine - 4 wiersze dla
PatientFindings - 2 wiersze dla
PatientDiagnosis - 2 wiersze dla
PatientCC - 5 wierszy dla
PatientAdvice
otrzymasz 3x6x4x2x2x5 =1440 wierszy w zestawie wyników, podczas gdy potrzebujesz tylko 3+6+4+2+2+5 (+1) =23 wydziwianie. To 60 razy więcej wierszy (i o wiele więcej kolumn) niż potrzeba.
Lepiej, jeśli wykonasz 6 oddzielnych zapytań z jednym JOIN do jednej (z 6) tabel w każdym zapytaniu (i jeszcze jedno zapytanie, aby pobrać dane z tabeli bazowej Appointment ). I połącz wyniki 6 zapytań w kodzie aplikacji . Przykład dla zapytania podstawowego i zapytania do przyłączenia do pierwszej tabeli:
Tabela podstawowa :
SELECT
a.appointment_id,
a.patient_id
FROM
Appointment AS a
WHERE
a.appointment_id = 46
Dołącz-1 do badania pacjenta :
SELECT
pi.investigation_name,
pi.investigation_id
FROM
Appointment AS a
JOIN
PatientInvestigation AS pi
ON pi.appointment_id = a.appointment_id
WHERE
a.appointment_id = 46