MySQL:如何执行包含计算总和的多表查询?

MySQL:如何执行包含计算总和的多表查询?,mysql,relational-database,inner-join,Mysql,Relational Database,Inner Join,首先,有关表格之间的关系: 我正试图编写一个查询来检索:people\u has\u trips.people\u personID、people\u has\u trips\u tripID、seminarname、agent和“Amount”,这是指支付表中的所有条目在Trip表中的给定条目的总和。这与此相关,因为此查询将在我正在构建的Access前端的子窗体中使用。简单地说,这个查询的概念是:此人参加过哪次旅行,每次旅行总共花了多少钱 以下是我目前的代码: SELECT peop

首先,有关表格之间的关系:

我正试图编写一个查询来检索:people\u has\u trips.people\u personID、people\u has\u trips\u tripID、seminarname、agent和“Amount”,这是指支付表中的所有条目在Trip表中的给定条目的总和。这与此相关,因为此查询将在我正在构建的Access前端的子窗体中使用。简单地说,这个查询的概念是:此人参加过哪次旅行,每次旅行总共花了多少钱

以下是我目前的代码:

SELECT 
    people_has_trips.people_PersonID,
    people_has_trips.trips_tripID,
    people_has_trips.seminar_seminarID,
    seminar.seminarname,
    agentref.agent,
    payments.amount
FROM
    (seminar
    INNER JOIN (((trips
    INNER JOIN people_has_trips ON trips.tripID = people_has_trips.Trips_tripID)
    INNER JOIN payments ON trips.tripID = payments.trips_tripID)
    INNER JOIN agentnotes ON trips.tripID = agentnotes.Trips_tripID) ON seminar.seminarid = people_has_trips.seminar_seminarid)
        INNER JOIN
    agentref ON trips.agentref_agentid = agentref.agentid;
返回以下内容:

因此,我们已经完成了大部分工作,很明显最终版本将被清理一点(例如,Seminandry是不必要的),所以我唯一的问题是:我需要做什么,以代替“金额”显示每一笔付款,而是一次旅行的所有付款的总和


好处:敏锐的人会注意到“研讨会”实际上是一个可选的外键,因此这个由内部连接组成的查询排除了不包括研讨会的人员和旅行的任何组合。这不是我的本意,我还需要解决另一个问题。

很抱歉重新安排了SQL,但我很难了解发生了什么,直到我重新组织了它

如果您按对付款值以外的列进行分组,则可以使用诸如SUM之类的聚合函数来获取付款总额

选择
人有旅行。人是人,
人们有旅行,旅行,旅行,
人们有旅行,研讨会,
seminar.seminarname,
代理,
金额(付款金额)
来自研讨会
内部连接人员\u有\u行程
在…上
人们有旅行。研讨会
内部连接行程
在…上
people\u有\u trips.trips\u tripID=trips.tripID
内部联接支付
在…上
trips.tripID=payments.trips\u tripID
内部连接代理注释
在…上
agentnotes.Trips\u tripID=Trips.tripID
内连接代理
在…上
agentref.agentid=trips.agentref\u agentid
分组
人们有旅行,旅行,旅行,
人有旅行。人是人,
人们有旅行,研讨会,
seminar.seminarname,
代理
;

没有必要在每个连接处加括号。太好了!这也让我明白了,在查询中包含研讨会实际上是没有意义的,谢谢!