【问题标题】:Get a total from one table referencing ids from another从一个引用另一个表的 id 的表中获取总数
【发布时间】:2015-05-31 23:17:31
【问题描述】:

我需要在我的一张表(贷款)上获得总计,该表有多个具有相同 ID 的“用户 ID”,因此用户可以获得不止一本书,但也意味着他们可以对不同的书籍进行多次罚款(如图以下)

我想列出每个用户,然后列出他们欠的总罚款,但我不知道怎么做。

这里也是我的 PATRON(User) 数据库供参考

我已经使用了所有的用户和书籍,但我不确定如何为下一个目标做类似的事情

SELECT PATRON.Name, BOOK.CallNo, BOOK.Title, BOOK.Subject
FROM (BOOK INNER JOIN LOAN ON BOOK.CallNo = LOAN.CallNo) INNER JOIN PATRON ON LOAN.UserID = PATRON.USerID;

【问题讨论】:

  • join 子句中的括号建议使用 MS Access,但您应该根据您实际使用的数据库清楚地标记问题。
  • 我不确定你的意思,我想使用与最后列出的类似的 MySQL 语句,它适用于我的下一个目标,但我无法确定,我不知道是什么你的意思是,我在 SQL 语句方面经验丰富,在访问方面的知识更少
  • 。 .您使用两个数据库标记了这个问题:MySQL 和 MS Access。您不太可能同时使用两者。删除其中一个标签。
  • 我正在使用 MySQL 语句,主要是学习这一点,但对于这个练习,我使用的是 Access

标签: mysql sql ms-access


【解决方案1】:
SELECT PATRON.Name,
       BOOK.CallNo,
       BOOK.Title,
       BOOK.Subject,
       SUM(LOAN.Fine) AS TotalFine
FROM BOOK,
     LOAN,
     PATRON
WHERE BOOK.CallNo = LOAN.CallNo
  AND LOAN.UserID = PATRON.USerID
GROUP BY PATRON.USerID;

【讨论】:

  • 这(我不认为)正是我的意思
  • 我的意思是我想列出每个用户和他们欠的总罚款,这(从外观上看)只是得到可能欠的书和贷款,或者欠的总金额(尽管这些会是同一个数字,不是吗?)
  • 让我直截了当地说,您想获得特定用户的总罚款并显示他们的姓名、电话号码、书名(书名)、主题(书名)和总罚款额?
  • 是的,所以它会显示每个用户一次,然后其中大约 3-4 个会被罚款(虽然,一个有多个罚款),它只会显示一次总罚款
  • @Cacoon 你运行了那个查询吗?这正是这个查询所做的 afaik
【解决方案2】:

好吧,由于您没有给我们截屏,因此只能猜测其他两个表中的数据类型,因此我将给出最基本的答案并从那里开始解决。

我想列出每个用户,然后列出他们欠的总罚款

SELECT LOAN.UserID, 
       Sum(LOAN.Fine) AS SumOfFine
FROM LOAN
GROUP BY LOAN.UserID;

从那里,如果您需要来自PATRON 表的信息(假设它存储UserID),您可以执行INNER JOIN,它看起来像:

SELECT LOAN.UserID, 
       Sum(LOAN.Fine) AS SumOfFine,
       PATRON.[Name],
       PATRON.Age
FROM LOAN
     INNER JOIN PATRON
     ON LOAN.UserID = PATRON.UserID
GROUP BY LOAN.UserID, PATRON.[Name], Patron.Age;

我不确定BOOK 表是如何设置的。

【讨论】:

    猜你喜欢
    • 2020-10-09
    • 2013-04-19
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多