Heim >Datenbank >MySQL-Tutorial >Wie kann ich zwei Tabellen mit ähnlichen Strukturen, aber unterschiedlichen Kategorien in einer einzigen Ausgabetabelle kombinieren?

Wie kann ich zwei Tabellen mit ähnlichen Strukturen, aber unterschiedlichen Kategorien in einer einzigen Ausgabetabelle kombinieren?

Barbara Streisand
Barbara StreisandOriginal
2024-12-22 21:31:17944Durchsuche

How Can I Combine Two Tables with Similar Structures but Different Categories into a Single Output Table?

Kombinieren von zwei Tabellen für eine einzige Ausgabe

Datenbankoperationen erfordern oft das Zusammenführen von Daten aus mehreren Quellen zu einer zusammenhängenden Ausgabe. Eine häufige Herausforderung besteht darin, Tabellen mit ähnlichen Strukturen, aber unterschiedlichen Kategorien zu kombinieren. Betrachten Sie das folgende Problem:

Sie haben zwei Tabellen, „KnownHours“ und „UnknownHours“, mit Spalten einschließlich ChargeNum (eine eindeutige Kennung), CategoryID (eine Kategoriezuweisung), Monat (ein Datum) und Stunden ( der tatsächliche Wert). Die Aufgabe besteht darin, diese Tabellen unter Ignorierung der Monatsspalte in einer einzigen Datentabelle zu kombinieren und die Stunden nach ChargeNum und CategoryID zu gruppieren.

Die erwartete Ausgabe ist:

ChargeNum    CategoryID     Hours
111111       1              90
111111       2              50
111111       Unknown        110.5
222222       1              40
222222       Unknown        25.5

Um dies zu erreichen können wir den UNION-Operator verwenden, der die Ergebnisse zweier Abfragen kombiniert. Für dieses Problem erstellen wir zwei Abfragen:

Abfrage 1:

SELECT ChargeNum, CategoryID, SUM(Hours)
FROM KnownHours
GROUP BY ChargeNum, CategoryID

Diese Abfrage ruft jeweils die ChargeNum, CategoryID und die Summe der Stunden ab Kombination aus der Tabelle „KnownHours“.

Abfrage 2:

SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours)
FROM UnknownHours
GROUP BY ChargeNum

Diese Abfrage ruft die ChargeNum und die Summe der Stunden für jeden Eintrag in der Tabelle „UnknownHours“ ab und weist „Unknown“ als Kategorie-ID zu.

Kombiniert beides Abfragen mit UNION ALL erzeugen die gewünschte Ausgabe:

SELECT ChargeNum, CategoryID, SUM(Hours)
FROM KnownHours
GROUP BY ChargeNum, CategoryID
UNION ALL
SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours)
FROM UnknownHours
GROUP BY ChargeNum

Der UNION ALL-Operator führt die Ergebnisse zusammen, ohne Duplikate zu entfernen. Bereitstellung einer vollständigen Ansicht der kombinierten Daten.

Das obige ist der detaillierte Inhalt vonWie kann ich zwei Tabellen mit ähnlichen Strukturen, aber unterschiedlichen Kategorien in einer einzigen Ausgabetabelle kombinieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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