作者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