Depuis appointmnent_id est la clé primaire de Appointment , cette table a un 1:N relation avec les 6 tables.
C'est le cas où la jointure à ces 6 tables produira plusieurs lignes avec des données en double , c'est comme un Cartesian Product . Par exemple si (pour un seul id=46 ), il y a :
- 3 lignes pour
PatientInvestigation - 6 lignes pour
PatientTreatmentMedicine - 4 lignes pour
PatientFindings - 2 lignes pour
PatientDiagnosis - 2 lignes pour
PatientCC - 5 lignes pour
PatientAdvice
vous obtiendrez 3x6x4x2x2x5 =1440 lignes dans le jeu de résultats, alors que vous n'avez besoin que de 3+6+4+2+2+5 (+1) =23 Lignes. C'est 60 fois plus de lignes (et avec beaucoup plus de colonnes) que nécessaire.
C'est mieux si vous faites 6 requêtes séparées avec un JOIN à une (des 6) tables dans chaque requête (et une autre requête pour obtenir les données de la table de base Appointment ). Et combiner les résultats des 6 requêtes dans le code de l'application . Exemple pour la requête de base et la requête à joindre à la première table :
Table de base :
SELECT
a.appointment_id,
a.patient_id
FROM
Appointment AS a
WHERE
a.appointment_id = 46
Join-1 à 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