查询选修了王平老师所讲授所有课程的学生的学号和成绩

有选课表sc ={sno学号,cno课程号,tno教师号,score 成绩}

教师表t = {tno教师号,tn姓名}

授课表tc = {tno教师号,cno课程号}

题目: 查询选修了王平老师所讲授所有课程的学生的学号和成绩

1)首先选出那些选修了王平老师课程的学生.

select sno from sc 
inner join t on sc.tno=t.tno 
where t.tn='王平' 
  

2)选出王平老师教授的所有课程数

select count(tc.cno) from tc 
inner join t on t.tno = tc.tno 
where t.tn='王平'

3)  在(1)中那些选修了王平老师的课程的学生这个大范围中,找出选修了王平课程数=王平教授的所有课程数的那些学生的学号

select sno from sc 
inner join t on sc.tno=t.tno 
where t.tn='王平' group by sc.sno             
having count(sc.cNo)=
(
    select count(tc.cno) from tc 
    inner join c on c.cno = tc.cno 
    inner join t on t.tno = tc.tno 
    where t.tn = '王平' 
)

4)在整个选课表sc中,只要sc.sno在(3)得到的范围里面,就查询他们的学号和成绩.

select sc.sno,sc.score from sc 
where
(
    select sno from sc 
    inner join t on sc.tno=t.tno 
    where t.tn='王平' group by sc.sno             
    having count(sc.cNo)=
        (
        select count(tc.cno) from tc 
        inner join c on c.cno = tc.cno 
        inner join t on t.tno = tc.tno 
        where t.tn = '王平' 
    )
)

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值