Sinds appointmnent_id
is de primaire sleutel van Appointment
, deze tabel heeft een 1:N
relatie met alle 6 tabellen.
Dit is het geval wanneer het toevoegen aan deze 6 tabellen meerdere rijen met dubbele gegevens oplevert , het is als een Cartesian Product
. Bijvoorbeeld als (voor slechts één id=46
), zijn er:
- 3 rijen voor
PatientInvestigation
- 6 rijen voor
PatientTreatmentMedicine
- 4 rijen voor
PatientFindings
- 2 rijen voor
PatientDiagnosis
- 2 rijen voor
PatientCC
- 5 rijen voor
PatientAdvice
je krijgt 3x6x4x2x2x5 =1440
rijen in de resultatenset, terwijl je alleen 3+6+4+2+2+5 (+1) =23
nodig hebt rijen. Dat zijn 60 keer meer rijen (en met veel meer kolommen) dan nodig.
Het is beter als u 6 afzonderlijke zoekopdrachten doet met één JOIN bij één (van de 6) tabellen in elke zoekopdracht (en nog een vraag om de gegevens uit de basistabel te halen Appointment
). En combineer de resultaten van de 6 zoekopdrachten in de applicatiecode . Voorbeeld voor de basisquery en de query om samen te voegen met de eerste tabel:
Basistafel :
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