Seit appointmnent_id
ist der Primärschlüssel von Appointment
, diese Tabelle hat ein 1:N
Beziehung zu allen 6 Tabellen.
Dies ist der Fall, wenn das Verbinden mit diesen 6 Tabellen mehrere Zeilen mit doppelten Daten erzeugt , es ist wie ein Cartesian Product
. Zum Beispiel, wenn (für nur eine id=46
), gibt es:
- 3 Zeilen für
PatientInvestigation
- 6 Zeilen für
PatientTreatmentMedicine
- 4 Zeilen für
PatientFindings
- 2 Zeilen für
PatientDiagnosis
- 2 Zeilen für
PatientCC
- 5 Zeilen für
PatientAdvice
Sie erhalten 3x6x4x2x2x5 =1440
Zeilen in der Ergebnismenge, während Sie nur 3+6+4+2+2+5 (+1) =23
benötigen Reihen. Das sind 60-mal mehr Zeilen (und viel mehr Spalten) als nötig.
Es ist besser, wenn Sie 6 separate Abfragen mit einem JOIN zu einer (der 6) Tabellen in jeder Abfrage durchführen (und eine weitere Abfrage, um die Daten aus der Basistabelle Appointment
zu erhalten ). Und kombiniere die Ergebnisse der 6 Abfragen im Anwendungscode . Beispiel für die Basisabfrage und die Abfrage, die mit der ersten Tabelle verknüpft werden soll:
Basistisch :
SELECT
a.appointment_id,
a.patient_id
FROM
Appointment AS a
WHERE
a.appointment_id = 46
Join-1 to PatientInvestigation :
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