我需要编写一个SQL查询,以获取住在城市所有医院的病人。当然,在一个城市里可能有几家医院。
例如,如果住在华盛顿的病人“xxx”住在医院里,我只需要列出他在华盛顿所有医院都住过的情况。
这是表格的结构:
桌上病人
patientID
patientCity桌上医院
hospitalCode
hospitalCity表hospital_stay
hospitalCode
patientID
cityStay对于MySQL来说,最有效的方法是什么?谢谢!
发布于 2013-11-03 01:35:16
不幸的是,MySQL无法在分组之前进行排序,所以在对结果进行分组之前,我必须使用子查询来正确地排序结果。
玩得开心:)
SELECT * FROM (
SELECT
p.patientID,
hs.hospitalCode
FROM
patient p
INNER JOIN hospital h ON (p.patientCity = h.hospitalCity)
LEFT JOIN hospital_stay hs ON (p.patientID = hs.patientID AND h.hospitalCode = hs.hospitalCode)
ORDER BY 2
) AS tmp_table
GROUP BY 1
HAVING NOT ISNULL(hospitalCode)发布于 2013-11-02 23:55:00
这个查询应该可以:
Select p.patientID
, p.patientCity
from patient p
inner join hospital h on h.hospitalCity = p.patientCity
inner join hospital_stay hs on hs.hospitalCode = h.hospitalCode
--where hs.cityStay = 1
group by p.patientID, p.patientCity
having count(*) = (select count(*) from hospital
where hospitalCity = p.patientCity);如果cityStay的标志上写着病人去了医院,请删除这条评论。
https://stackoverflow.com/questions/19747925
复制相似问题