作者Adonisy (堂本瓜一)
看板Database
标题Re: [SQL ] (考题类)查询的问题
时间Mon Aug 27 16:28:03 2012
我怎麽记得高考资料库考的是这个?
Book (callNo,isbn,title,subject)
Patron(pId,name,startDate)
BorrowRecord(pId,callNo,borrowDate,returnDate)
1.找出张三(为一读者姓名)所借过的所有书的分类号和书名,一本书只能列出一次
2.请列出现电脑类(即 subject='Computer') 每一本书籍的 ISBN,书名和被借阅的
次数请用一个SQL叙述表达
3.对於每一位总借阅次数超过10(含)次的读者,列出其读者编号和2009年的借阅总
次数
因为刚好我的书附录就有写到这题 ^^
第一题我是用 group by + inner join 解决
第二题我是用次查询
select b.isbn,Book.title,b.counts from (
select isbn,COUNT(isbn) as counts from BorrowRecord inner join book
on book.callno = borrowrecord.callno
where subject='computer'
group by isbn ) as b
inner join Book
on b.isbn = Book.isbn
第三题也是用次查询
select p.pId,count(*) as 借阅总次数 from
(
select B.pId,B.borrowDate as counts from
(
select pId,COUNT(*) as counts from BorrowRecord
group by pId
having count(*) >=10
) as a
inner join Borrowrecord as B
on a.pId = B.pId
where B.borrowDate between '2009/1/1' and '2009/12/31'
) as p
group by p.pId
--
昔日所为 今日所受
今日所为 明日所受
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.221.67.170
1F:→ Adonisy:不过考试要用 ansi写,between and是 t-SQL 08/27 16:35
2F:→ glennchen:楼上是说真的吗? 08/27 16:52
3F:→ Adonisy:假的...没有啦...本来考SQL结果你的指令只能在特定版本 08/27 19:42
4F:→ Adonisy:才跑的出来,和标准答案的落差太大,没人会去执行你的code 08/27 19:43