[SQL ] SQL語法問題

看板Database作者 ( )時間10年前 (2013/10/20 17:16), 編輯推噓5(5010)
留言15則, 2人參與, 最新討論串5/5 (看更多)
※ [本文轉錄自 Examination 看板 #1INwnp3M ] 作者: Sunofgod ( ) 看板: Examination 標題: Re: [考題] 資料庫主鍵問題 時間: Thu Oct 17 17:22:57 2013 : P.S. 定義要看清楚,每個字每個符號都請了解意思... : 今年高考好像滿多人因為定義的關係痛失分數...orz 感謝~後來有弄懂了 想在請教他最後一題連鎖題 附上題目http://ppt.cc/4BJi 第三小題 想得到一個表格 -------------------- EName DName Bob HR Joe Mis Mary -------------------- 兩種SQL語法何者正確,若錯誤請寫出查詢結果 SQL1 SOL2 Select EName,DName Select EName,DName From 員工任務,部門 From 員工任務,部門 Where 員工任務.DID=部門.DID Where 員工任務.DID=部門.DID Or 員工任務.DID is Null Union Order by EName,DName Select EName,DName From 員工任務,部門 Where 員工任務.DID is Null Order by EName,DName ----------------------------------------------------------------------- SQL1-第一次看到Where裡面有Or的...應該是題目做的不夠多 但邏輯上可以理解。 SQL2我也認為是這樣 第一個查詢會得到 EName DName Bob HR Joe Mis Union底下的查詢Where那裡沒有合併條件 會變成員工任務跟部門做卡氏基 然後選擇員工任務.DID為Null的後應該會得到 EName DName Mary HR (來自Mary跟HR合併) Mary Mis (來自Mary跟Mis合併) Mary Sale (來自Mary跟Sale合併) 所以合併後是得到 EName DName Bob HR Joe Mis Mary HR Mary Mis Mary Sale 不知道這樣想對不對 先謝謝各位以及先前熱心回答的板友 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.164.93.128 ※ 編輯: Sunofgod 來自: 218.164.93.128 (10/17 17:24) ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: Sunofgod (111.254.110.152), 時間: 10/20/2013 17:16:53

10/20 17:17, , 1F
轉來這邊請教版友們 謝謝~
10/20 17:17, 1F

10/20 19:46, , 2F
你是對的 但是我看2個語法都是錯的 結果都是一樣的
10/20 19:46, 2F

10/20 19:47, , 3F
正確應該是用left join on A.DID = B.DID 就好 不知正解是?
10/20 19:47, 3F

10/20 20:37, , 4F
這是國考非選 沒有正解 可以查到某補習班擬答 但是該補習
10/20 20:37, 4F

10/20 20:38, , 5F
班連主鍵答案都錯 也不指望了 請教第一個為什麼錯呢?
10/20 20:38, 5F

10/20 20:38, , 6F
不可以用Or嗎
10/20 20:38, 6F

10/20 23:46, , 7F
首先題目下得join有點怪 這種寫法是inner join但是加上or..
10/20 23:46, 7F

10/20 23:47, , 8F
http://0rz.tw/sKJUc 我建測試資料直接下給你看結果好了
10/20 23:47, 8F

10/20 23:52, , 9F
通常都會用left join如要用inner就會是要找兩邊都要對應的
10/20 23:52, 9F

10/20 23:52, , 10F
所以我不太理解他怎麼會用inner配or..
10/20 23:52, 10F

10/21 00:00, , 11F
耶...我懂你說的正解 只是他考試就是這樣出....
10/21 00:00, 11F
Select EName,DName From 員工任務 left outer join 部門 on 員工任務.DID=部門.DID Order by EName,DName 應該這樣就可以了吧?! 如果把你的ISNULL(DNAME,'')拿掉應該也對?! 我真的沒在書上看過Where裡面有Or的 還真的不知道資料會怎麼跑... 沒想到竟然也是錯的

10/21 00:11, , 12F
WHERE當然可以加or 可是不適合這題這樣的下法
10/21 00:11, 12F

10/21 00:13, , 13F
要下or還是用left join這類的寫法會比較清楚
10/21 00:13, 13F
剛想到..是不是因為執行順序是From先 因此還是兩個表格先做卡氏積 所以在Or條件選擇is NULL時才會連那些部門也一起選取了 另外你提供的網址好棒...我一直在找這種網站可以自己跑資料看看 謝謝!! ※ 編輯: Sunofgod 來自: 111.254.110.152 (10/21 00:21)

10/21 01:14, , 14F
要看結果 自己安裝sql server就好了...
10/21 01:14, 14F

10/21 09:25, , 15F
我知道~以前有摸過 但現在不想在這台電腦上裝有的沒的XD
10/21 09:25, 15F
文章代碼(AID): #1IOv-6Ty (Database)
文章代碼(AID): #1IOv-6Ty (Database)