Da appointmnent_id
è la chiave primaria di Appointment
, questa tabella ha un 1:N
relazione con tutte e 6 le tabelle.
Questo è il caso in cui l'unione a queste 6 tabelle produrrà più righe con dati duplicati , è come un Cartesian Product
. Ad esempio se (per un solo id=46
), ci sono:
- 3 righe per
PatientInvestigation
- 6 righe per
PatientTreatmentMedicine
- 4 righe per
PatientFindings
- 2 righe per
PatientDiagnosis
- 2 righe per
PatientCC
- 5 righe per
PatientAdvice
otterrai 3x6x4x2x2x5 =1440
righe nel set di risultati, mentre hai solo bisogno di 3+6+4+2+2+5 (+1) =23
righe. Ovvero 60 volte più righe (e con molte più colonne) del necessario.
È meglio se esegui 6 query separate con un UNISCITI a una (delle 6) tabelle in ogni query (e un'altra query per ottenere i dati dalla tabella di base Appointment
). E combina i risultati delle 6 query nel codice dell'applicazione . Esempio per la query di base e per la query da unire alla prima tabella:
Tavolo base :
SELECT
a.appointment_id,
a.patient_id
FROM
Appointment AS a
WHERE
a.appointment_id = 46
Unisciti a 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