为什么MySQL总和查询只返回一行?

为什么MySQL总和查询只返回一行?,mysql,sql,database,join,Mysql,Sql,Database,Join,我正在尝试创建一个MySQL查询,以返回数据库中每个帐户的所有对账单余额之和。查询如下所示: SELECT SUM(balance), handle FROM statement_versions INNER JOIN statements ON statement_versions.statement_id = statements.id INNER JOIN accounts ON statements.account_id = accounts.id; 当我这样做时,它只返回一行,其中有

我正在尝试创建一个MySQL查询,以返回数据库中每个帐户的所有对账单余额之和。查询如下所示:

SELECT SUM(balance), handle FROM statement_versions
INNER JOIN statements ON statement_versions.statement_id = statements.id
INNER JOIN accounts ON statements.account_id = accounts.id;

当我这样做时,它只返回一行,其中有一个合计余额和一个帐户(ID为1的帐户)。我想要的是返回所有帐户及其汇总报表余额。我该如何实现这一点?

您需要按某个对象分组,可能是
句柄
(我认为这与帐户id有关?),否则MySQL将
对从您的
连接
中选择的所有值进行求和。添加
GROUP BY
子句将使
SUM
发生在
GROUP BY
中列的每个不同值上。将查询更改为:

SELECT SUM(balance), handle FROM statement_versions
INNER JOIN statements ON statement_versions.statement_id = statements.id
INNER JOIN accounts ON statements.account_id = accounts.id
GROUP BY handle;
SELECT SUM(balance), accounts.id FROM statement_versions
INNER JOIN statements ON statement_versions.statement_id = statements.id
INNER JOIN accounts ON statements.account_id = accounts.id
GROUP BY accounts.id;
如果
handle
accounts.id
不相关,并且您希望获得按
accounts.id
分组的结果,请将查询更改为:

SELECT SUM(balance), handle FROM statement_versions
INNER JOIN statements ON statement_versions.statement_id = statements.id
INNER JOIN accounts ON statements.account_id = accounts.id
GROUP BY handle;
SELECT SUM(balance), accounts.id FROM statement_versions
INNER JOIN statements ON statement_versions.statement_id = statements.id
INNER JOIN accounts ON statements.account_id = accounts.id
GROUP BY accounts.id;

亲爱的,谢谢!实际上,我正试图找出如何将其转换为Laravel query builder,但我认为,如果基础查询正确,我就能够这样做。我错了哈哈。至少这应该是正确的基本查询!也许能帮上拉威尔的忙谢谢。“字段列表”(SQL:选择sum(
statement\u versions
balance
)作为来自
accounts
的聚合,因此我不确定发生了什么事)中的1054未知列“statement\u versions.balance”未找到。似乎出于某种原因,连接的结构不正确或有什么问题。@hoolakoola这是您的laravel版本吗?你应该问另一个问题,这样一些拉威尔专家就会看到。