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