2012-04-13 92 views
0

我想写一个查询来获得一个报告,显示哪本书已经被借出最多。我有一个查询来获取最实际的图书,但我需要能够显示该书的标题,该书位于另一个表中。SQL查询 - 需要从不同的表中获取信息

SELECT * FROM LOAN; 

LOANID  BOOKID  CUSTID OUTDATE INDATE DUEDATE 

SELECT * FROM BOOK; 

AUTHORID  BOOKID BKISBN BKSTATUS BKTITLE BKSERIES BKTYPE BKNUMBER 

下面的查询是我迄今为止,并得到BOOKID:

SELECT Q1.* FROM 
(SELECT BOOKID, COUNT(*) 
    AS BOOK_COUNT 
    FROM LOAN 
    GROUP BY LOAN.BOOKID) Q1, 
(SELECT MAX(Q2.BOOK_COUNT) 
    AS HIGH_COUNT 
    FROM (SELECT BOOKID, COUNT(*) 
    AS BOOK_COUNT 
    FROM LOAN 
    GROUP BY LOAN.BOOKID) Q2) Q3 
WHERE Q1.BOOK_COUNT = Q3.HIGH_COUNT; 

结果:

BOOKID BOOK_COUNT 
---------- ---------- 
     387   3 

现在我需要BkTitle从书籍表。

任何人都可以协助吗?

+0

欢迎StackOverflow上:如果您发布的代码,XML或数据样本,** **请在高亮文本编辑器的线,然后单击“代码示例”按钮('{} ')在编辑器工具栏上进行恰当的格式化和语法突出显示! – 2012-04-13 20:28:41

+0

您使用的是哪种数据库引擎? – 2012-04-13 20:32:56

回答

0

尝试

select b.bookid, b.BKTITLE , count(l.loanid) as cnt_loan 
from book b 
inner join loan l on l.bookid = b.bookid 
WHERE ROWNUM < 2 
group by b.bookid 
order by cnt_loan desc 
+0

我正在使用Oracle SQL Plus。上面的代码也没有工作, – 2012-04-13 20:38:47

+0

ORA-00923:在预期的地方找不到FROM关键字 – 2012-04-13 20:39:47

+0

@ReneCanter:如果您使用的是Oracle,那么请尝试更新的答案。 – 2012-04-13 20:42:48