複数のテーブルからのデータを結合して合計する: 間違った結果に対処する
SQL クエリでは、3 つの列で構成されるテーブルを取得することを目的としています。 : 「PROJECT」、「SUM_AP」、および「SUM_INV」。ただし、集計プロセスでのグループ化が原因で、不正確な結果が発生しました。
不正確な結果の原因:
クエリの "GROUP BY" 句は、以下に基づいて値を結合します。 「AP.[PROJECT]」列。この集計プロセスは基本的に重複した「値」エントリを合計するため、結果が増大します。
解決策: サブ選択クエリの使用
この問題に対処するには、次の手順を実行します。副選択を使用したクエリクエリ:
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」値のみがグループ化され、合計が正しく計算され、意図した結果が得られます。
以上が複数のテーブルを結合すると SQL の合計計算が正しくなくなるのはなぜですか? サブクエリを使用して修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。