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