嵌套查询和连接查询(SQL SERVER 2008)

一、 实验题目:嵌套查询和连接查询
二 、实验目的:加深对嵌套查询和连接查询的理解,比较两种方法的不同。
题目六:
药品(编号,名称,价格,厂商)
处方(药品编号,数量,医生编号)
医生 (编号,姓名,科室,职称)
根据上面基本表的信息完成下列查询。
1 列出医生“张力”开的所有药品名称 。
2 列出比“北方制药”所有药品都贵的药品信息。
3 列出内科所有处方的医生姓名、药品名称、金额

所测试数据:

INSERT INTO 医生
(编号,姓名,科室,职称)
VALUES
('1001','张三','外科','主刀医师'),
('1002','李四','内科','主任医师'),
('1003','王五','小儿科','主治医师'),
('1004','王二','眼科','主任医师'),
('1005','赵六','妇科','主刀医师'),
('1006','张力','内科','副主任医师'),
('1007','张力','骨科','主刀医师');
select * from 医生

INSERT INTO 药品
(编号,名称,价格,厂商)
VALUES
('2001','板蓝根','28.00','云南制药'),
('2002','益气养血口服液','29.00','北方制药'),
('2003','小儿感冒颗粒','35.00','三九药业'),
('2004','999感冒灵','14.00','三九药业'),
('2005','维C银翘片','25.00','北方制药'),
('2006','珍珠明目滴眼液','19.00','天龙药业');
select * from 药品

INSERT INTO 处方
(药品编号,数量,医生编号)
VALUES
('2001','2','1002'),
('2001','2','1006'),
('2005','2','1006'),
('2006','2','1004'),
('2002','2','1005'),
('2003','2','1003');
select * from 处方

在这里插入图片描述
第一题:

--连接查询
select 药品.名称
from 医生,处方,药品
where 医生.编号=处方.医生编号 
and 处方.药品编号=药品.编号 
and 医生.姓名='张力';

--嵌套查询
select 名称 from 药品
where 编号 in
(select 药品编号 from 处方
  where 医生编号 in
  (select 编号 from 医生
    where 姓名='张力'));

在这里插入图片描述
第二题:

--谓词:
select 药品.* from 药品
where 价格>all
(select 价格 from 药品
 where 厂商='北方制药');
 
--聚合函数:
select 药品.* from 药品
where 价格>
(select max(价格) from 药品
 where 厂商='北方制药');

在这里插入图片描述
第三题:

select 医生.姓名,药品.名称,药品.价格
from 医生,处方,药品
where 医生.编号=处方.医生编号 
and 处方.药品编号=药品.编号 
and 医生.科室='内科';

在这里插入图片描述

发布了42 篇原创文章 · 获赞 30 · 访问量 7195

猜你喜欢

转载自blog.csdn.net/Mr____Cheng/article/details/103761159