Heim >Datenbank >MySQL-Tutorial >Wie können wir KnownHours- und UnknownHours-Tabellen für einen einheitlichen Stundenbericht kombinieren?

Wie können wir KnownHours- und UnknownHours-Tabellen für einen einheitlichen Stundenbericht kombinieren?

DDD
DDDOriginal
2024-12-29 08:32:14317Durchsuche

How Can We Combine KnownHours and UnknownHours Tables for a Unified Hours Report?

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!

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