Maison >base de données >tutoriel mysql >Comment pouvons-nous combiner les tables KnownHours et UnknownHours pour un rapport sur les heures unifié ?

Comment pouvons-nous combiner les tables KnownHours et UnknownHours pour un rapport sur les heures unifié ?

DDD
DDDoriginal
2024-12-29 08:32:14317parcourir

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

Combiner des tables pour une sortie unifiée

Introduction :
Lorsque vous traitez plusieurs tables, il devient nécessaire de les fusionner afin de fournir un résultat complet et significatif. La combinaison de tables implique des techniques telles que la jointure, l'union et l'agrégation.

Énoncé du problème :
La tâche à accomplir consiste à combiner deux tables, KnownHours et UnknownHours, en une seule sortie qui regroupe les heures par ChargeNum et CategoryID, en ignorant le mois.

Tableau Détails :

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

Sortie souhaitée :
La sortie attendue est une table unique avec la structure suivante :

Table Column Description
Consolidated ChargeNum Unique charge number
Consolidated CategoryID Category associated with the charge or 'Unknown'
Consolidated Hours Total hours for the charge

Solution :
Pour obtenir le résultat souhaité, nous utiliserons l'opération UNION dans SQL. UNION combine les résultats de plusieurs requêtes dans une seule table. Dans ce cas, nous exécuterons deux requêtes, une pour la table KnownHours et une pour la table UnknownHours. Les requêtes regrouperont les heures pour chaque ChargeNum et CategoryID (et 'Unknown' pour UnknownHours).

La première requête pour la table KnownHours :

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

La deuxième requête pour la table UnknownHours :

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

Enfin, nous combinerons les résultats de ces deux requêtes en utilisant UNION 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

Cette opération UNION ALL concaténera les résultats des deux requêtes en une seule table, fournissant le résultat souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn