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