Desde
appointmnent_id
é a chave primária de Appointment
, esta tabela tem um 1:N
relacionamento com todas as 6 tabelas. Este é o caso em que a junção a essas 6 tabelas produzirá várias linhas com dados duplicados , é como um
Cartesian Product
. Por exemplo se (para apenas um id=46
), existem:- 3 linhas para
PatientInvestigation
- 6 linhas para
PatientTreatmentMedicine
- 4 linhas para
PatientFindings
- 2 linhas para
PatientDiagnosis
- 2 linhas para
PatientCC
- 5 linhas para
PatientAdvice
você terá 3x6x4x2x2x5 =
1440
linhas no conjunto de resultados, enquanto você só precisa de 3+6+4+2+2+5 (+1) =23
linhas. Isso é 60 vezes mais linhas (e com muito mais colunas) do que o necessário. É melhor se você fizer 6 consultas separadas com um JOIN para uma (das 6) tabelas em cada consulta (e mais uma consulta para obter os dados da tabela base
Appointment
). E combine os resultados das 6 consultas no código do aplicativo . Exemplo para a consulta base e a consulta para unir à primeira tabela:Tabela base :
SELECT
a.appointment_id,
a.patient_id
FROM
Appointment AS a
WHERE
a.appointment_id = 46
Join-1 to 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