99高考資處資料庫 - 高考

Table of Contents


想問一下99年資料庫第三大題第一小題

手邊的考古題有給答案,但是我看不懂雙重Not exists

Select Sname

From Student

Where not exists (Select *

From Teacher

Where not exists (Select *

From Take

Where Student.Sid = Take.Sid

AND Take.Tid = Teacher.Tid

AND Tname = "Harison Ford"


我不懂的點是如果這個老師有開兩門課

只有修一門課的學生不是也會被選到嗎?



--

All Comments

Victoria avatarVictoria2013-06-29
這是在考FORALL的觀念
Ida avatarIda2013-07-01
假設這個老師開兩門課 你要兩門課都有修才會被選中!!
Vanessa avatarVanessa2013-07-05
只修一門課的人不會列出
Dora avatarDora2013-07-08
是說在最裡面這層(Take),如果老師開兩門課,只選一門
Select * 不會Return東西出去?
Blanche avatarBlanche2013-07-12
Join的概念,內層Select會Return
Quanna avatarQuanna2013-07-14
Student X Teacher - Take的資料
Kumar avatarKumar2013-07-15
是的,都會
Kumar avatarKumar2013-07-16
那可以請問這兩種情況的人,在外面的兩層如何被分辨的?
Isabella avatarIsabella2013-07-19
內層的not exists會選出修此老師一堂課或沒修此老師課
Catherine avatarCatherine2013-07-20
的學生,外層的not exists又選出不屬於這些學生的學生
Erin avatarErin2013-07-24
也就是修兩堂課的學生囉
Necoo avatarNecoo2013-07-26
講那麼多他不懂,這個是除法的寫法這樣你懂了吧
Eden avatarEden2013-07-26
關鍵在於你要先把所有表都卡式積起來
Joseph avatarJoseph2013-07-27
然後依照條件篩選
Megan avatarMegan2013-07-30
SQL就是這點不好 join這麼多效能就差了...
Puput avatarPuput2013-08-01
推malowda 代表所有條件都要成立的除法 算固定寫法吧XD
Jacob avatarJacob2013-08-05
除非是真的超大型資料庫,不然查詢語法效能優劣都無感...