gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:25:11 25 4
gpt4 key购买 nike

首先,相关表之间的关系:enter image description here

我正在尝试编写一个查询,该查询检索:people_has_trips.people_personID、people_has_trips_tripID、研讨会名称、代理和“金额”,该金额旨在作为旅行中给定条目的付款表中所有条目的总和 table 。这是相关的,因为该查询旨在在我正在构建的 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;

返回以下内容:
Query Result

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

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

最佳答案

很抱歉重新安排了 SQL,但在重新安排之前我很难理解正在发生的事情。

如果您对付款金额以外的列进行GROUP BY,则可以使用SUM等聚合函数来获取付款总额。

SELECT 
people_has_trips.people_PersonID,
people_has_trips.trips_tripID,
people_has_trips.seminar_seminarID,
seminar.seminarname,
agentref.agent,
SUM(payments.amount)
FROM seminar
INNER JOIN people_has_trips
ON
people_has_trips.seminar_seminarid = seminar.seminarid
INNER JOIN trips
ON
people_has_trips.Trips_tripID = trips.tripID
INNER JOIN payments
ON
trips.tripID = payments.trips_tripID
INNER JOIN agentnotes
ON
agentnotes.Trips_tripID = trips.tripID
INNER JOIN agentref
ON
agentref.agentid = trips.agentref_agentid
GROUP BY
people_has_trips.trips_tripID,
people_has_trips.people_PersonID,
people_has_trips.seminar_seminarID,
seminar.seminarname,
agentref.agent
;

关于MySQL:如何执行包含计算总和的多表查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59719758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com