Maison >base de données >tutoriel mysql >Comment l'opération UNION de SQL peut-elle consolider les heures de plusieurs 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!