Od appointmnent_id
je primární klíč Appointment
, tato tabulka má 1:N
vztah se všemi 6 tabulkami.
To je případ, kdy spojením s těmito 6 tabulkami vznikne více řádků s duplicitními daty , je to jako Cartesian Product
. Například if (pouze pro jeden id=46
), existují:
- 3 řádky pro
PatientInvestigation
- 6 řádků pro
PatientTreatmentMedicine
- 4 řádky pro
PatientFindings
- 2 řádky pro
PatientDiagnosis
- 2 řádky pro
PatientCC
- 5 řádků pro
PatientAdvice
získáte 3x6x4x2x2x5 =1440
řádků ve výsledné sadě, zatímco potřebujete pouze 3+6+4+2+2+5 (+1) =23
řádky. To je 60krát více řádků (a mnohem více sloupců), než je potřeba.
Je lepší, když uděláte 6 samostatných dotazů s jedním JOIN do jedné (ze 6) tabulek v každém dotazu (a ještě jeden dotaz na získání dat ze základní tabulky Appointment
). A zkombinujte výsledky 6 dotazů v kódu aplikace . Příklad pro základní dotaz a dotaz pro připojení k první tabulce:
Základní tabulka :
SELECT
a.appointment_id,
a.patient_id
FROM
Appointment AS a
WHERE
a.appointment_id = 46
Připojte se 1 k 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