SQL查询高人请进

来源:百度知道 编辑:UC知道 时间:2024/05/15 00:26:17
用户表user_1
用户ID user_1_ID
用户性名 user_1_name
用户金额 user_1_money
注册日期 user_date

图书表 books
图书ID books_ID
图书名称 books_name
上架日期 up_date
是否被借出 books_if

租借表 lease
图书ID books_ID
用户ID user_1_ID
借出日期 loan_date
归还日期 return_date

5.查询借出次数排行前10的书籍名以及借阅这些书的人名
好的在加20分

select * from user_1 a,books b,lease c
where a.user_1_ID = c.user_1_ID and
b.books_ID = c.books_ID and //将三张表连接查询
c.books_ID in
( select top 10 books_ID from
(select books_ID ,count(*) s from lease
group by books_ID ) k
oeder by a.s desc ) //这一段是找出借出排行前10 的 图书id,找出排行在前十的图书id的借阅信息

恐拍还要再增加一个字段,租借次数,每借出一次加一。

我觉得不能用一条SQL语句完成
old_nebula说的应该可以实现
另外也可以用程序中做一个处理来实现

关注一下

不清楚你的数据表里是否有借出次数这样的字段?
如果有就用下面的方法可以实现
select top 10 * from 表名 order by 借出次数字段 desc

表名:如果要查询的信息不在一个表里这里就用个关联语句,将2个表或多个表关联查询

借出次数可以通过COUNT租借表中的图书ID来实现,
书名和人名可以通过关联三张表来实现,
最主要的是要找出前十,
应该会用到循环语句,
可以编写一个过程来实现……

统计lease
的books_ID 数量排名前十再查询这些ID的用户就可以了