使用しているテーブルが3つあります。
- AccountingLine-一般的なアカウントの詳細を保持します
- 予算-各AccountingLineの予算データを保持します(AccountingLineごとに多くの行)
- 実際-各AccountingLineの実際のコストデータを保持します(AccountingLineごとに多くの行)
AccountingLineテーブルからALLROWSを返し、BudgetandActualsテーブルから各AccountingLineの金額を合計する単一のクエリで結果を取得しようとしています。
以下のSQLを使用すると、SUMは予算または実績データに対して機能しません。結合の1つとSUM関数の1つを削除すると、単一の結合テーブルに対して正しく計算されます。非常に奇妙な...MySQLの3つ以上のテーブルで複数の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の予算額の合計、および各accounting_lineの実際の金額の合計が表示されることを期待します。
全体を検索しましたが、複数の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