ホームページ >データベース >mysql チュートリアル >サブクエリを使用して SQL の複数のテーブルからデータを正しく集計する方法
複数のテーブルからデータを集計する SQL クエリ
SQL では、さまざまな手法を使用して複数のテーブルからデータを集計できます。以下に、2 つのテーブルのデータを結合するクエリのシナリオとソリューションを示します。
シナリオ:
両方に列 [PROJECT] が含まれる 2 つのテーブル AP と INV について考えます。と[値]。目標は、両方のテーブルから各プロジェクトの [値] の合計を計算する結果を取得することです。結果は次の形式になります:
PROJECT | SUM_AP | SUM_INV ---------+--------+-------- XXXXX | 500 | 800
不正なクエリ:
次のクエリが試行されましたが、結果は不正確でしたsums:
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]
結果が正しくない理由:
間違ったクエリにより、合計を適用する前に値がグループ化され、重複したプロジェクト値が合計に含まれることになります。
正しい解決策:
宛先この場合、サブ選択を含むクエリを使用できます。
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]
このクエリは、サブ選択を利用して各プロジェクト内の合計を個別に計算し、値の重複の問題を排除し、正しい集計結果を提供します。
以上がサブクエリを使用して SQL の複数のテーブルからデータを正しく集計する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。