我的SQL有點生疏,只是好奇,如果有更好的方式來做這個WHERE子句?假設有一種方法,我敢肯定有一種方法。它的運行速度很快,但我不喜歡它,並想知道它是否可以改進。有沒有更好的方法來做到這一點?
SELECT DISTINCT p.firstname ,
p.middlename ,
p.lastname ,
p.gender ,
p.dob ,
p.id AS patientid ,
pr.id AS practiceid ,
pr.[name] AS practicename,
pr.parentaco ,
pp.encounterdate
FROM ((aco.patients_practices patients_practices
LEFT OUTER JOIN aco.patients p
ON (
patients_practices.patientid = p.id
)
)
LEFT OUTER JOIN aco.practices pr
ON (
patients_practices.practiceid = pr.id
)
)
INNER JOIN aco.patientpreferences pp
ON (
pp.patientid = p.id
)
WHERE (
pr.parentaco =
(SELECT parentaco
FROM aco.practices
WHERE master_companyid = 763
)
OR pr.id =
(SELECT parentaco
FROM aco.practices
WHERE master_companyid = 763
)
)
AND pp.encounterdate IS NOT NULL
'master_companyid'是否有唯一的約束? – Kash
否,因爲它可以有很多孩子。這是Master_Company表中的FK。 – dbinott
您對'WHERE'子句中'pr'的引用有效地將'LEFT OUTER'連接轉換爲'INNER'連接。尾隨的'INNER'加入也沒有幫助。 – HABO