Heim > Datenbank > MySQL-Tutorial > Wie aggregiere ich Daten aus mehreren Tabellen in SQL mithilfe von Unterabfragen korrekt?

Wie aggregiere ich Daten aus mehreren Tabellen in SQL mithilfe von Unterabfragen korrekt?

Linda Hamilton
Freigeben: 2025-01-01 13:44:11
Original
188 Leute haben es durchsucht

How to Correctly Aggregate Data from Multiple Tables in SQL Using Subqueries?

SQL-Abfrage zum Aggregieren von Daten aus mehreren Tabellen

In SQL kann das Aggregieren von Daten aus mehreren Tabellen mithilfe verschiedener Techniken erreicht werden. Hier ist ein Szenario und eine Lösung für eine Abfrage, die Daten aus zwei Tabellen kombiniert:

Szenario:

Betrachten Sie zwei Tabellen, AP und INV, die beide die Spalten [PROJEKT] enthalten. und [Wert]. Das Ziel besteht darin, ein Ergebnis abzurufen, das die Summe von [Wert] für jedes Projekt aus beiden Tabellen berechnet, was zu folgendem Format führt:

PROJECT | SUM_AP | SUM_INV
---------+--------+--------
XXXXX   | 500    | 800
Nach dem Login kopieren

Falsche Abfrage:

Die folgende Abfrage wurde versucht, ergab jedoch falsche Beträge:

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]
Nach dem Login kopieren

Grund für Falsche Ergebnisse:

Die falsche Abfrage gruppiert die Werte, bevor die Summe angewendet wird, was dazu führt, dass doppelte Projektwerte in die Summen einbezogen werden.

Richtige Lösung:

Um dieses Problem zu beheben, kann eine Abfrage mit Unterauswahlen verwendet werden:

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]
Nach dem Login kopieren

Diese Abfrage verwendet Unterauswahlen ermöglichen die separate Berechnung der Summen innerhalb jedes Projekts, wodurch das Problem doppelter Werte vermieden wird und die korrekten Gesamtergebnisse bereitgestellt werden.

Das obige ist der detaillierte Inhalt vonWie aggregiere ich Daten aus mehreren Tabellen in SQL mithilfe von Unterabfragen korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage