基于SqlServer 连接、嵌套和集合查询

(3) 进行以下工作:

1.查询每个学生及其选修课程的情况。

先创建每门课的先休课视图:

Create view SU_Cxianxiuke as

SELECT Cno,Cname,(select Cname from Courses as Courses1 where Courses1.Cno=Courses.Pre_Cno)as 先修课 from Courses

在这里插入图片描述

再进行四个表的连接查询

select s.Sno AS 学号,s.Sname as 姓名,先修课

from Students as s,Courses as c,Reports as r,SU_Cxianxiuke as x

where c.Cno=r.Cno and s.Sno=r.Sno and x.Cno=c.Cno and x.先修课 is not null

在这里插入图片描述

2.查询每一门课的间接先修课(即先修课的先修课)。

自连接

select c1.Cname,c2.Cname from Courses as c1,Courses c2

WHERE c1.Pre_Cno=c2.Cno

在这里插入图片描述

3.查询与“李伟”在同一个系学习的学生学号(Sno)、姓名(Sname)和系名(Sdept)。

select Sno,Sname,Sdept from Students

where Sdept=(select Sdept from Students where Sname=‘李伟’)

在这里插入图片描述

4.查询选修了课程名为“数据结构”的学生学号(Sno)和姓名(Sname)。

select S.Sno,Sname from Students as S,Courses AS C, Reports AS R

where S.Sno=R.Sno and R.Cno=C.Cno AND C.Cname=‘数据结构’

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值