Maison >base de données >tutoriel mysql >Comment puis-je combiner deux tables avec des structures similaires mais des catégories différentes en une seule table de sortie ?

Comment puis-je combiner deux tables avec des structures similaires mais des catégories différentes en une seule table de sortie ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-22 21:31:17948parcourir

How Can I Combine Two Tables with Similar Structures but Different Categories into a Single Output Table?

Combiner deux tables pour une seule sortie

Les opérations de base de données nécessitent souvent de fusionner des données provenant de plusieurs sources en une sortie cohérente. Un défi courant consiste à combiner des tableaux avec des structures similaires mais des catégories différentes. Considérez le problème suivant :

Vous disposez de deux tables, "KnownHours" et "UnknownHours", avec des colonnes comprenant ChargeNum (un identifiant unique), CategoryID (une attribution de catégorie), Month (une date) et Hours ( la valeur réelle). La tâche consiste à combiner ces tables, en ignorant la colonne Mois, en une seule table de données, regroupant les heures par ChargeNum et CategoryID.

Le résultat attendu est :

ChargeNum    CategoryID     Hours
111111       1              90
111111       2              50
111111       Unknown        110.5
222222       1              40
222222       Unknown        25.5

Pour y parvenir , nous pouvons utiliser l'opérateur UNION, qui combine les résultats de deux requêtes. Pour ce problème, nous allons construire deux requêtes :

Requête 1 :

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

Cette requête récupère le ChargeNum, le CategoryID et la somme des heures pour chaque combinaison de la table "KnownHours".

Requête 2 :

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

Cette requête récupère le ChargeNum et la somme des heures pour chaque entrée de la table « UnknownHours », en attribuant « Inconnu » comme CategoryID.

Combinant les deux les requêtes utilisant UNION ALL produisent le résultat souhaité :

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

L'opérateur UNION ALL fusionne les résultats sans supprimer doublons, offrant une vue complète des données combinées.

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