作者k222 (小烏龜)
看板Examination
標題[考題] 三等一般警察人員考試 資料庫一題
時間Sun Jun 30 23:54:50 2013
二、假設某學校資料庫如下:
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
1F:→ malowda:用常識也知道不可能同時間有兩個課程用同一間教室 07/01 00:18
2F:→ malowda:這和資料庫熟不熟沒關係好嗎這是常識 07/01 00:19
3F:推 ARCHERDEVIL:不是很確定 我有點忘記count 會抓哪個table的資料 07/01 00:21
4F:→ ARCHERDEVIL:但印象中如果用count(*)應該會抓全部 07/01 00:22
5F:→ ARCHERDEVIL:至於這裡的全部究竟是卡式積還是classroom 的我要想 07/01 00:22
6F:→ ARCHERDEVIL:正確寫法應該是count(s.time) 07/01 00:23
7F:→ ARCHERDEVIL:select 那邊也應該是s.cid 而不是r.cid 雖然也可以 07/01 00:24
8F:→ malowda:如果有某間SMALL的教室沒開放使用就不會被算到 07/01 00:25
9F:→ malowda:沒辦法找出每間教室使用次數包含0的小型教室 07/01 00:26
10F:推 carterdunk:HAVING R.TYPE='small' 錯了 07/01 00:26
11F:推 GLTY:樓上一語道破@@ 沒開放就不會有紀錄也不會被列出,這樣? 07/01 00:27
12F:→ carterdunk:R.TYPE非聚合函數,應寫在GROUP BY之外 07/01 00:27
13F:→ GLTY:被插隊了XD" 07/01 00:28
14F:推 ARCHERDEVIL:歐真的XD 07/01 00:29
15F:→ ARCHERDEVIL:carterdunk是對的XD 07/01 00:30
16F:→ k222:謝謝各位指教:)) 07/01 08:25
17F:→ VampireClub:改成where r.rid=s.rid and r.type='small'? 07/01 08:58
18F:→ k222:似乎是...請問HAVING只能放聚合函數嗎? 07/01 09:34
19F:推 nightdealer:咦?鼎文的講義範例中,HAVING 也有使用非聚合函數說 07/04 13:28