複数のテーブルにわたるデータベース集計: 合計計算の修正
データベース内の複数のテーブルを扱う場合、SUM などの集計関数は慎重に処理する必要があります。正確な結果を保証します。これは、両方の列 [PROJECT] と [Value] を持つ 2 つのテーブル AP と INV からの値の合計を計算しようとするクエリによって例示されます。目的の出力は次のようになります:
PROJECT | SUM_AP | SUM_INV
ただし、指定されたクエリは合計エラーにより誤った結果を示しました:
SELECT AP.[PROJECT], SUM(AP.Value) AS SUM_AP, SUM(INV.Value) AS SUM_INV FROM AP INNER JOIN INV ON (AP.[PROJECT] =INV.[PROJECT]) WHERE AP.[PROJECT] = 'XXXXX' GROUP BY AP.[PROJECT]
問題は値のグループ化にあります。 GROUP BY 句は重複した値を結合するため、合計が不正確になります。
これを修正するには、サブ選択を使用できます。
SELECT AP1.[PROJECT], (SELECT SUM(AP2.Value) FROM AP AS AP2 WHERE AP2.PROJECT = AP1.PROJECT) AS SUM_AP, (SELECT SUM(INV2.Value) FROM INV AS INV2 WHERE INV2.PROJECT = AP1.PROJECT) AS SUM_INV FROM AP AS AP1 INNER JOIN INV AS INV1 ON (AP1.[PROJECT] =INV1.[PROJECT]) WHERE AP1.[PROJECT] = 'XXXXX' GROUP BY AP1.[PROJECT]
このアプローチでは、[PROJECT] ごとに合計が個別に計算されます。 ] サブ選択を使用することで、正確な集計が行われます。
以上が複数のデータベーステーブルにわたる SUM 値を正しく集計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。