ホームページ > データベース > mysql チュートリアル > 複数のテーブルを結合すると SQL の合計計算が正しくなくなるのはなぜですか? サブクエリを使用して修正するにはどうすればよいですか?

複数のテーブルを結合すると SQL の合計計算が正しくなくなるのはなぜですか? サブクエリを使用して修正するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-28 19:18:11
オリジナル
579 人が閲覧しました

Why are my SQL sum calculations incorrect when combining multiple tables, and how can I fix them using subqueries?

複数のテーブルからのデータを結合して合計する: 間違った結果に対処する

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]
ログイン後にコピー

説明:

  • SUM() 関数内のサブクエリは、「AP」からの「Value」エントリの合計を計算します。一意の「PROJECT」値ごとに、それぞれ「」テーブルと「INV」テーブル。
  • プライマリ クエリはこれらを結合します。一致する「PROJECT」値に基づいてサブクエリを実行し、その結果をもう一度集計して最終テーブルを生成します。

この改訂されたクエリにより、個別の「PROJECT」値のみがグループ化され、合計が正しく計算され、意図した結果が得られます。

以上が複数のテーブルを結合すると SQL の合計計算が正しくなくなるのはなぜですか? サブクエリを使用して修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート