Maison >base de données >tutoriel mysql >Comment l'opération UNION de SQL peut-elle consolider les heures de plusieurs tables ?

Comment l'opération UNION de SQL peut-elle consolider les heures de plusieurs tables ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 15:05:41160parcourir

How Can SQL's UNION Operation Consolidate Hours from Multiple Tables?

Combiner des tables pour une sortie consolidée

Dans le domaine de la manipulation de données, la fusion de plusieurs tables en une seule sortie cohérente est un défi courant. Considérez le scénario dans lequel vous disposez de deux tables, KnownHours et UnknownHours, chacune contenant des numéros de frais, des catégories, des mois et des heures travaillées. L'objectif est d'agréger les heures, sans tenir compte du mois, pour obtenir une vue consolidée.

Pour y parvenir, vous pouvez exploiter la puissance du fonctionnement UNION de SQL. Cela vous permet de combiner les résultats de plusieurs requêtes en un seul ensemble de données. Dans ce cas particulier, vous devez regrouper les heures par numéro de charge et catégorie, en utilisant la fonction d'agrégation SUM().

La requête SQL pour y parvenir est la suivante :

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;

Ici, le mot clé UNION ALL combine les résultats de deux requêtes distinctes. La première requête récupère les heures de la table KnownHours, en les regroupant par numéro de charge et catégorie ; la deuxième requête récupère les heures de la table UnknownHours, en les traitant comme appartenant à une catégorie « Inconnu ».

En utilisant UNION ALL, l'étape de vérification des doublons est omise, ce qui entraîne de meilleures performances par rapport à l'utilisation de UNION seule.

Le résultat de cette requête est un tableau consolidé qui fournit le total des heures travaillées pour chaque numéro et catégorie d'accusation, quel que soit le mois au cours duquel elles ont eu lieu.

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