Sql server SQL-查找具有所有可用疾病的患者
我有下列表格 病人Sql server SQL-查找具有所有可用疾病的患者,sql-server,Sql Server,我有下列表格 病人 pID <<PK>> pName pID pName 病患 dName <<PK>> dName 痛苦来源(dName和pID也是痛苦来源的主键) dName pID 我想做的是选择患有疾病列表中所有疾病的患者的姓名,但我真的不知道该怎么做 我试着在网上搜索,但没有找到任何对我有帮助的东西。这是我为SQL简介类剩下的唯一任务,我真的想不起如何设置查询。按患者分组,只取那些具有与疾病表中相同数量的不同疾病的患者
pID <<PK>>
pName
pID
pName
病患
dName <<PK>>
dName
痛苦来源(dName和pID也是痛苦来源的主键)
dName
pID
我想做的是选择患有疾病列表中所有疾病的患者的姓名,但我真的不知道该怎么做
我试着在网上搜索,但没有找到任何对我有帮助的东西。这是我为SQL简介类剩下的唯一任务,我真的想不起如何设置查询。按患者分组,只取那些具有与疾病表中相同数量的不同疾病的患者
select p.pid, p.pname
from patient p
join suffersFrom s on s.pid = p.pid
group by p.pid, p.pname
having count(distinct s.dname) = (select count(*) from DiseaseList)
最简单的方法:从每个患者的结果集开始,以及他们患有多少种疾病。然后,添加一个
having
,查看该计数与表中的总行数匹配的位置。一般的逻辑是“返回‘疾病数量’与‘疾病’表中记录数量相同的患者”。编辑:juergen刚刚发布了一个答案,正好如此:)假设隔离?
select p.pid, p.pname
from patient p
join suffersFrom s on s.pid = p.pid
group by p.pid, p.pname
having count(distinct s.dname) = (select count(*) from DiseaseList)