[考題] 三等一般警察人員考試 資料庫一題

看板Examination作者 (小烏龜)時間12年前 (2013/06/30 23:54), 編輯推噓5(5014)
留言19則, 7人參與, 最新討論串1/1
二、假設某學校資料庫如下: Course (CID, NAME, DEPT) // 課程(課程代號,課程名稱,系名) Classroom (RID, LOCATION, TYPE) // 教室(教室編號,教室地點,類別) Use(CID , RID, TIME) // 使用(課程代號,教室編號,使用時間藍色為主鍵 (四)指出並改正下列SQL 語法錯誤以找出每間小型教室的使用次數。(10 分) SELECT R.RID, COUNT (*) AS usecount FROM Classroom R, Use S WHERE R.RID=S.RID GROUP BY R.RID HAVING R.TYPE='small' 我認為的答案是改COUNT(TIME) 因為同一時間可能有兩個課程使用同一間教室? COUNT (*)可能會多算, 我不是很熟資料庫, 請問我的想法是否正確? 請各位大大解惑 感謝~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.219.104

07/01 00:18, , 1F
用常識也知道不可能同時間有兩個課程用同一間教室
07/01 00:18, 1F

07/01 00:19, , 2F
這和資料庫熟不熟沒關係好嗎這是常識
07/01 00:19, 2F

07/01 00:21, , 3F
不是很確定 我有點忘記count 會抓哪個table的資料
07/01 00:21, 3F

07/01 00:22, , 4F
但印象中如果用count(*)應該會抓全部
07/01 00:22, 4F

07/01 00:22, , 5F
至於這裡的全部究竟是卡式積還是classroom 的我要想
07/01 00:22, 5F

07/01 00:23, , 6F
正確寫法應該是count(s.time)
07/01 00:23, 6F

07/01 00:24, , 7F
select 那邊也應該是s.cid 而不是r.cid 雖然也可以
07/01 00:24, 7F

07/01 00:25, , 8F
如果有某間SMALL的教室沒開放使用就不會被算到
07/01 00:25, 8F

07/01 00:26, , 9F
沒辦法找出每間教室使用次數包含0的小型教室
07/01 00:26, 9F

07/01 00:26, , 10F
HAVING R.TYPE='small' 錯了
07/01 00:26, 10F

07/01 00:27, , 11F
樓上一語道破@@ 沒開放就不會有紀錄也不會被列出,這樣?
07/01 00:27, 11F

07/01 00:27, , 12F
R.TYPE非聚合函數,應寫在GROUP BY之外
07/01 00:27, 12F

07/01 00:28, , 13F
被插隊了XD"
07/01 00:28, 13F

07/01 00:29, , 14F
歐真的XD
07/01 00:29, 14F

07/01 00:30, , 15F
carterdunk是對的XD
07/01 00:30, 15F

07/01 08:25, , 16F
謝謝各位指教:))
07/01 08:25, 16F

07/01 08:58, , 17F
改成where r.rid=s.rid and r.type='small'?
07/01 08:58, 17F

07/01 09:34, , 18F
似乎是...請問HAVING只能放聚合函數嗎?
07/01 09:34, 18F

07/04 13:28, , 19F
咦?鼎文的講義範例中,HAVING 也有使用非聚合函數說
07/04 13:28, 19F
文章代碼(AID): #1Hq5JD1l (Examination)