【问题标题】:How can i get the most borrowed books?我怎样才能得到最多借的书?
【发布时间】:2015-11-02 16:19:08
【问题描述】:

我会直奔主题。我的数据库是这样的

每本书都存储在 reading_materials 中,并且每本书都有自己独特的 Accession,无论它有多少份(忽略字段名称“Copies”)。当学生或人员借书时,数据被插入借阅表。我现在的问题是,我怎样才能在借书桌上获得最多借的书。

有人可以帮我吗?

我的数据库是这样的:

Trans_ID PRIMARY KEY
A_Accession_No FOREIGN KEY references reading_materials(Accession_No)
B_Student_No
DateBorrowed
DateReturned
Penalty

阅读材料

Accession_No PRIMARY KEY
Date_acquired
Title
Copyright
Available

book_author

B_Accesion_No FOREIGN KEY references reading_materials('Accession_No')
Author_ID FOREIGN KEY references author(Author_ID)

作者

Author_ID PRIMARY KEY
Name

*我为我糟糕的英语道歉,如果你们中的一些人觉得这不是很清楚

【问题讨论】:

  • 这是家庭作业吗?它绝对看起来像一个......到目前为止你尝试过什么?
  • 是的。我还没有尝试过任何东西。我想做的是检查 reading_materials 中的所有标题并在借用表中获取它们的加入号并计算其中有多少,但我不知道我应该如何查询它。我仍然是 sql 的菜鸟。 T^T

标签: mysql


【解决方案1】:

试试这个:

SELECT a.Accession_No, a.Title, COUNT(b.a_accession_NO) as NoOfTimesBorrowed
FROM Reading_Materials a LEFT JOIN borrow b ON a.accession_No = b.a_accession_NO
GROUP BY a.Accession_No
ORDER BY NoOfTimesBorrowed DESC
LIMIT 5

这将选择TOP 5 并从最常借的书中排序。

【讨论】:

  • tnx 很多!你真的拯救了我的一天! ^_^
【解决方案2】:

SELECT *, COUNT(SELECT Trans_ID WHERE A_Accession_NO = Accession_NO) AS BorrowedCount FROM reading_materials ORDER BY BorrowedCount DESC

该查询应该按降序为您提供借阅次数最多的图书,并告诉您每本图书被借了多少次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多