作者asdd (我爱胖颖颖)
看板Examination
标题[考题] 94地特/资料库
时间Thu Mar 21 16:16:08 2013
课程(课程编号,课程名称,学分)
老师(老师证号,老师姓名,导师班级,办公室号)
学生(学生证号,学生姓名,班级)
学务(课程编号,老师证号,学生证号,成绩,上课教室)
列出所有课程皆及格的学生的学生姓名
想要请问如果用not exists......not 去解可否写成
select 学生姓名 from 学生
where not exists (
select * from 课程 where not exists(
select * from 学务 where 学务.学生证号=学生.学生证号
and 学务.课程编号=课程.课程编号 and 学务.成绩>=60
))
有错麻烦指教一下 谢谢各位
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.136.183.245
1F:推 carterdunk:你这样列 感觉会选出"至少有一科成绩及格"的学生 03/21 16:30
2F:推 carterdunk:select 学生姓名 from 学生 where not exists ( 03/21 16:32
3F:→ carterdunk:select * from 学务 where 学务.学生证号=学生.学生证 03/21 16:33
4F:→ carterdunk: and 学务.成绩<60 ) 03/21 16:33
5F:→ carterdunk:有错请指正.. 03/21 16:34
6F:→ asdd:难道这题不是在考FORALL的观念吗 @@ 03/21 16:42
7F:推 carterdunk:所有课程皆及格的学生的学生姓名 感觉不用课程这张表 03/21 16:49
8F:→ carterdunk:因为学务里面已经有课程编号了 03/21 16:49
9F:→ asdd:嗯嗯 你说得有道理 03/21 17:04
10F:→ malowda:第二个NOT EXISTS 是去除有任何一科有>=60的学生只显示都 03/21 20:44
11F:→ malowda:是<60的学生,第一个NOT EXISTS 去除都<60的学生所以是显 03/21 20:50
12F:→ malowda:示至少有一科>=60的学生 03/21 20:50
13F:→ asdd:我刚实际在MYSQL上跑 实际结果是会列出有修所有课程且及格的 03/21 22:27
14F:→ asdd:的学生姓名 03/21 22:28