有3个表
1,CS表-保存检查项目信息
检查项目编号 Varchar(3)
检查项目名 Varchar(50)
2,HOSP表-保存医院信息
医院编号 Varchar(3)
医院名 Varchar(50)
3,CSHP表-保存各个医院能够做的检查项目
医院编号 Varchar(3)
检查项目编号 Varchar(3)
现在需要查找能够做CS表中所有检查项目的医院的名字,要求用1条SQL语句
数据量不大,不用过分追求效率。(各表纪录数约 20,100,1500)
------解决方案--------------------
1: CS <table>
proId,proName
2: HOSP <table>
hospId,hospName
3: CSHP <table>
hospId,proId
=========================sql====================
select h.hospName
from HOSP h,
CSHP c,
(
select count(*) cs_count from CS
)cs
where c.hospId = h.hospId
group by c.hospId
having count(*) = cs_count;
------解决方案--------------------
SELECT t2.医院名,t1.检查项目名
FROM CS t1
LEFT OUTER JOIN CSHP t2 ON t1.检查项目编号 = t2.检查项目编号
LEFT OUTER JOIN HOSP t3 ON t2.医院编号 = t3.医院编号
------解决方案--------------------
select cs.检查项目编号, cs.检查项目名, hosp.医院编号, hosp.医院名
from cs, cshp, hosp
where cs.检查项目编号=cshp.检查项目编号(+) and cshp.医院编号=hosp.医院编号(+)