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