Heim >Datenbank >MySQL-Tutorial >Wie können wir KnownHours- und UnknownHours-Tabellen für einen einheitlichen Stundenbericht kombinieren?
Kombinieren von Tabellen für eine einheitliche Ausgabe
Einführung:
Beim Umgang mit mehreren Tabellen wird es notwendig diese zusammenzuführen, um eine umfassende und aussagekräftige Ausgabe zu liefern. Das Kombinieren von Tabellen erfordert Techniken wie Join, Union und Aggregation.
Problemstellung:
Die vorliegende Aufgabe besteht darin, zwei Tabellen, KnownHours und UnknownHours, in einer einzigen Ausgabe zu kombinieren gruppiert Stunden nach ChargeNum und CategoryID und ignoriert den Monat.
Tabelle Details:
Table | Column | Description |
---|---|---|
KnownHours | ChargeNum | Unique charge number |
KnownHours | CategoryID | Category associated with the charge |
KnownHours | Month | Month when the charge was incurred |
KnownHours | Hours | Known hours for the charge |
UnknownHours | ChargeNum | Unique charge number |
UnknownHours | Month | Month when the charge was incurred |
UnknownHours | Hours | Unknown hours for the charge |
Gewünschte Ausgabe:
Die erwartete Ausgabe ist eine einzelne Tabelle mit der folgenden Struktur:
Table | Column | Description |
---|---|---|
Consolidated | ChargeNum | Unique charge number |
Consolidated | CategoryID | Category associated with the charge or 'Unknown' |
Consolidated | Hours | Total hours for the charge |
Lösung:
Um die gewünschte Ausgabe zu erzielen, verwenden wir die UNION-Operation in SQL. UNION kombiniert die Ergebnisse mehrerer Abfragen in einer einzigen Tabelle. In diesem Fall führen wir zwei Abfragen aus, eine für die KnownHours-Tabelle und eine für die UnknownHours-Tabelle. Die Abfragen aggregieren die Stunden für jede ChargeNum und CategoryID (und „Unknown“ für UnknownHours).
Die erste Abfrage für die KnownHours-Tabelle:
SELECT ChargeNum, CategoryID, SUM(Hours) FROM KnownHours GROUP BY ChargeNum, CategoryID
Die zweite Abfrage für die UnknownHours-Tabelle :
SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours) FROM UnknownHours GROUP BY ChargeNum
Abschließend werden wir die Ergebnisse dieser beiden Abfragen mit UNION kombinieren ALL:
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
Diese UNION ALL-Operation verkettet die Ergebnisse der beiden Abfragen in einer einzigen Tabelle und liefert so die gewünschte Ausgabe.
Das obige ist der detaillierte Inhalt vonWie können wir KnownHours- und UnknownHours-Tabellen für einen einheitlichen Stundenbericht kombinieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!