Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL-查找具有所有可用疾病的患者_Sql Server - Fatal编程技术网

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)