作者smalldulan (媽媽咪阿)
看板Examination
標題[考題] 100普考資料處理
時間Fri Jun 21 21:44:20 2013
[考題] 國考歷屆考題與考題觀念討論(書裡看到的選這個)請附上想法、出處
五、假設某圖書館之關聯資料庫中有七個關聯資料表,其資料綱要(data schema)如下,
底線代表主要鍵。
BOOK(BookId, Title, PublisherName)
BOOK_AUTHORS(BookId, AuthorName)
PUBLISHER(Name, Address, Phone)
BOOK_COPIES(BookId, BranchId, No_Of_Copies)
BOOK_LOANS(BookId, BranchId, CardNo, DataOut, DueDate)
LIBRARY_BRANCH(BranchId, BranchName, Address)
BORROWER(CardNo, Name, Address, Phone)
寫出以下查詢之 SQL:(40分)
(一)該圖書館的所有分館各擁有多少本書名為“三國演義”的書?
(二)現在那些借閱人在各分館借出“三國演義”這本書?
(三)現在那些借閱人在各分館有逾期未還的書?
(四)該圖書館擁有多少不同的書籍?
這題小弟在對某補習班的答案時發現補習班的答案跟我的有很大的落差
不知道是小弟我自己觀念不清楚還是補習班答案錯了,所以PO上來與各位
高手們討論~希望各位高手們賜教~謝謝~
以下是小弟的寫法:
------------------------------------------------------------------
(一) SELECT LI.BookId,LI.BranchName,No_Of_Copies
FROM BOOK,BOOK_COPIES AS CP,LIBRARY_BRANCH AS LI
WHERE BOOK.BookId=CP.BookId AND
CP.BranchId=LI_BRANCH.BranchId AND
Title="三國演義"
GROUP BY LI.BranchId,LI.BranchName;
[註]假設No_Of_Copies是重複書的數量
(二) SELECT DISTINCT CardNo,Name
FROM BOOK,BOOK_LOANS,BORROWER
WHERE BOOK.BookId=BOOK_LOANS.BookId AND
BOOK_LOANS.CardNo=BORRPW.CardNo AND
Title="三國演義";
[註]假設可能有借閱者在不同分館借閱相同的書
(三) 此小題使用SQL SERVER語法查詢:
SELECT CardNo,Name
FROM BOOK_LOANS,BORROWER
WHERE BOOK_LOANS.CardNo=BORROWER.CardNo AND
GETDATE() > DueDate;
(四) SELECT COUNT(BookId)
FROM BOOK_COPIES;
[註]假設1.不同的書會有不同的BookId
假設2.可能有書圖書館沒有收藏但把書的資料先建到資料庫中
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.114.181.74
1F:推 asdd:看起來大致都沒問題 只是為什麼最後一題要選BOOK_COPIES? 06/21 22:02
2F:推 asdd:其實老師講義有類似題 第一題是寫SUM(No_Of_Copies) 06/21 22:07
3F:→ asdd:但是我覺得應該不用加看法跟你一樣 補充一下那題是96高考三 06/21 22:09
※ 編輯: smalldulan 來自: 111.242.170.165 (06/21 22:19)
4F:→ smalldulan:我是假設可能有書的資料有在資料庫中但圖書館中並沒有 06/21 22:23
5F:→ smalldulan:收藏此書 06/21 22:23
※ 編輯: smalldulan 來自: 111.242.170.165 (06/21 22:25)
6F:推 ARCHERDEVIL:二)這樣寫要預設不同館相同書名的ID不一樣吧? 06/21 22:26
7F:→ ARCHERDEVIL:假設相同書名不同館的話你用distinct會少列 06/21 22:27
8F:→ ARCHERDEVIL:應該是這樣吧? 06/21 22:27
9F:推 ARCHERDEVIL:然後(四)要用書名區分吧?不同館相同書名算一種書... 06/21 22:31
10F:→ ARCHERDEVIL:如果依照你現在的寫法,不同館相同書名會全部分開計算 06/21 22:32
11F:→ ARCHERDEVIL:結果相同的書籍也會被認為是不同書籍 06/21 22:33
12F:推 asdd:第二題應該是少一個LIBRARY_BRANCH的table 06/21 22:37
13F:推 ARCHERDEVIL:樓上沒錯 然後我寫會把distinct拿掉換group by 06/21 22:40
14F:推 malowda:四要用BOOK不可以用BOOK_COPIES如果某本沒COPY就不會出現 06/21 22:40
15F:→ ARCHERDEVIL:針對卡號 人名 分館來做分類 06/21 22:40
16F:→ malowda:這樣就少算了 06/21 22:40
17F:→ malowda:二分館也要進來不同分館會有不同人借三國都要算進去 06/21 22:44
18F:→ malowda:沒注意看二這樣可以不用分館 06/21 22:47
19F:推 ARCHERDEVIL:分館是copy的部份主鍵 加進去比較好吧 頂多就是跑慢點 06/21 22:52
20F:→ ARCHERDEVIL:寫錯 不是copy 我是說loans table的 抱歉 06/21 22:54
21F:→ smalldulan:沒考上就只能半工半讀了~ 06/21 22:57
22F:推 asdd:以上推文的都要上 大家一起加油 XD~~ 06/21 22:59
23F:推 ARCHERDEVIL:別未戰先怯阿!加油! 06/21 23:03
24F:→ smalldulan:嗯嗯~大家一起加油!! 06/21 23:04