Sedan appointmnent_id
är den primära nyckeln för Appointment
, den här tabellen har en 1:N
relation med alla 6 tabellerna.
Detta är fallet när anslutning till dessa 6 tabeller ger flera rader med dubbletter av data , det är som en Cartesian Product
. Till exempel if (för endast en id=46
), det finns:
- 3 rader för
PatientInvestigation
- 6 rader för
PatientTreatmentMedicine
- 4 rader för
PatientFindings
- 2 rader för
PatientDiagnosis
- 2 rader för
PatientCC
- 5 rader för
PatientAdvice
du får 3x6x4x2x2x5 =1440
rader i resultatuppsättningen, medan du bara behöver 3+6+4+2+2+5 (+1) =23
rader. Det är 60 gånger fler rader (och med många fler kolumner) än vad som behövs.
Det är bättre om du gör 6 separata frågor med en JOIN till en (av de 6) tabellerna i varje fråga (och ytterligare en fråga för att hämta data från bastabellen Appointment
). Och kombinera resultaten av de 6 frågorna i applikationskoden . Exempel på basfrågan och frågan för att ansluta till den första tabellen:
Bastabell :
SELECT
a.appointment_id,
a.patient_id
FROM
Appointment AS a
WHERE
a.appointment_id = 46
Gå med-1 till 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