Desde appointmnent_id
es la clave principal de Appointment
, esta tabla tiene un 1:N
relación con las 6 tablas.
Este es el caso donde unirse a estas 6 tablas producirá múltiples filas con datos duplicados , es como un Cartesian Product
. Por ejemplo, si (solo para un id=46
), hay:
- 3 filas para
PatientInvestigation
- 6 filas para
PatientTreatmentMedicine
- 4 filas para
PatientFindings
- 2 filas para
PatientDiagnosis
- 2 filas para
PatientCC
- 5 filas para
PatientAdvice
obtendrás 3x6x4x2x2x5 =1440
filas en el conjunto de resultados, mientras que solo necesita 3+6+4+2+2+5 (+1) =23
filas Eso es 60 veces más filas (y con muchas más columnas) de las necesarias.
Es mejor si haces 6 consultas separadas con un JOIN a una (de las 6) tablas en cada consulta (y una consulta más para obtener los datos de la tabla base Appointment
). Y combina los resultados de las 6 consultas en el código de la aplicación . Ejemplo para la consulta base y la consulta para unir a la primera tabla:
Mesa base :
SELECT
a.appointment_id,
a.patient_id
FROM
Appointment AS a
WHERE
a.appointment_id = 46
Unirse-1 a Investigación de Pacientes :
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