我正在使用三张桌子。
- AccountingLine - 保存通用帐户详细信息
- Budget - 保存每个 AccountingLine 的预算数据(每个 AccountingLine 多行)
- 实际 - 保存每个 AccountingLine 的实际成本数据(每个 AccountingLine 多行)
我试图在一个查询中获取结果,该查询将从 AccountingLine 表中返回 ALL ROWS,并从 Budget 和 Actuals 表中对每个 AccountingLine 的金额求和。
使用下面的 SQL,SUM 不适用于预算或实际数据。如果我删除其中一个连接和一个 SUM 函数,那么它会正确计算单个连接表。很奇怪……有人在 MySQL 中的三个或更多表上使用多个 SUM 函数遇到这个问题吗?
SELECT A.*, SUM(B.`amount`) AS BudgetAmount, SUM(ACT.`amount`) as ActualAmount
FROM accounting_line A
LEFT JOIN budget B ON B.accounting_line_id = A.accounting_line_id
LEFT JOIN actual ACT ON ACT.accounting_line_id = A.accounting_line_id
GROUP BY A.`accounting_line_id`
通过发出上面的语句,我希望看到accounting_line 字段、每个accounting_line 的预算金额的SUM 和每个accounting_line 的实际金额的SUM。
我到处搜索,找不到多个 SUM 函数的实例。非常感谢您的任何建议。
乔什
表数据如下:
Table: AccountingLine
act_line_id department
----------------------------------
1 Sales
2 HumanResources
Table: Budget
budget_id actg_line_id amount
----------------------------------------------
1 1 3500.00
2 2 5000.00
3 2 15000.00
Table: Actual
actual_id actg_line_id amount
----------------------------------------------
1 1 1000.00
2 2 500.00
3 2 9000.00