码迷,mamicode.com
首页 > 数据库 > 详细

查询选修了全部课程的学生姓名_如何解?-MS-SQLServer/应用实例

时间:2017-08-07 22:27:39      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:student   解释   排除   查询   sel   sql   其他   分析   实例   

查询选修了全部课程的学生姓名
:student 是学生表 course 是选课表 sc 是课程表
select sname
from student
where not exists
(select *
from course
where not exists  
(select *
from sc
where sno =student.sno
and cno=course.cno)
如何解释呢?我只是约约的明白,但就是给别人解释不明白。希望高手给解释一下。

------回答---------

 

------其他回答(10分)---------


select *
from course
where not exists   
(select *
from sc
where sno =student.sno
and cno=course.cno)
这一段计算得出 某学生存在没有选的课程
如果外层再加上 一个不存在 没有选的课程。那就是全选了

------其他回答(10分)---------

 

SQL code
-- 从里往外分析 select * from student -- (3) where not exists ( select * from course -- (2) where not exists ( select * from sc where sno=student.sno -- (1) and cno=course.cno ) ); -- (1) 查找某一个学生所选的所有课程 select * from sc where sno=student.sno -- (2) 查找这个学生没有选修的课程 select * from course c where not exists ( select * from sc where sno=student.sno and cno=course.cno) -- (3) 排除这个没有选修所有课程的学生
------其他回答(4分)---------


负负得正,不存在任何一科没有选修的,也就是每科都选修了

查询选修了全部课程的学生姓名_如何解?-MS-SQLServer/应用实例

标签:student   解释   排除   查询   sel   sql   其他   分析   实例   

原文地址:http://www.cnblogs.com/jiao-/p/7301018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!