从内部加入多行

时间:2013-06-06 22:04:45

标签: php mysql

问题

我有四个表需要从中提取信息,两个只是简单的连接。

我的查询没有返回任何内容。基本上,有一些形式我需要确保我从一张桌子和下一张桌子上绑住我的病人,以便我可以拉出表格名称,这样它就是正确的表格。

我有什么

select person.first, person.last, treatmentPlan.created, treatmentPlan.updated, treatmentPlan.provider_id, intake.created, intake.updated, assesment.created, assesment.updated, discharge.created, discharge.updated

from form_patient_tie intake
LEFT OUTER JOIN form_patient_tie treatmentPlan ON intake.patient_id = treatmentPlan.patient_id
LEFT OUTER JOIN form_patient_tie assesment ON intake.patient_id = assesment.patient_id
LEFT OUTER JOIN form_patient_tie discharge ON intake.patient_id = discharge.patient_id

JOIN form as intakeForm ON intakeForm.form_id = intake.form_id
LEFT OUTER JOIN form treatmentPlanForm ON treatmentPlan.form_id = treatmentPlanForm.form_id
LEFT OUTER JOIN form assesmentForm on assesment.form_id = assesmentForm.form_id
LEFT OUTER JOIN form dischargeForm on discharge.form_id = dischargeForm.form_id
JOIN patient ON intake.patient_id = patient.patient_id
JOIN person on patient.person_id = person.person_id

WHERE (treatmentPlanForm.form_name LIKE "%Counseling Treatment Plan%" OR treatmentPlanForm.form_name IS NULL)
AND (intakeForm.form_name LIKE "%Counseling Intake%" OR intakeForm.form_name IS NULL)
AND (assesmentForm.form_name LIKE "%Counseling Assesment Review%" OR assesmentForm.form_name IS NULL)
AND (dischargeForm.form_name LIKE "%Counseling Discharge%" OR dischargeForm.form_name IS NULL)

即使我知道有一名患者进行了摄入,复查和评估,但没有出院,但它什么也没有返回。如果它们全部都是4,那么它可以正常工作,但如果它们缺少一个,则不然。

应该看起来像

John Doe 2013-01-13 2013-01-15 2013-02-13等绝对允许他们为空,因为不是每个人都会填写一个。

1 个答案:

答案 0 :(得分:0)

在我看来,您加入“表单”表(intakeForm别名)也应该是LEFT JOIN。否则,如果入口表单上没有匹配项,则整个查询将不返回任何内容。