12. Unir des tables
Ce chapitreporte sur les unions. Les jointures permettent de combiner et d'associer des données à partir de différentes tables de manière horizontale, tandis que les unions offrent la possibilité de regrouper des résultats provenant de plusieurs requêtes de manière verticale.
L'opérateur UNION est utilisé pour combiner les résultats d'au moins 2 requêtes commençant par la clause SELECT en un seul ensemble de résultats. Nous allons distinguer UNION et UNION ALL.
UNION
L'opérateur UNION renvoie uniquement les lignes distinctes présentes dans les résultats combinés de toutes les requêtes SELECT. Les doublons sont automatiquement éliminés. Pour comprendre comment utiliser cet opérateur, utilisons un exemple avec 2 tables fictives :
La table employee
| employeeID | employeeName | department |
|---|---|---|
| 1 | John Doe | Sales |
| 2 | Jane Smith | Marketing |
| 3 | Bob Johnson | Finance |
La table manager
| employeeID | employeeName | department | managerLevel |
|---|---|---|---|
| 4 | Alice Brown | Sales | 2 |
| 5 | Charlie White | Marketing | 1 |
| 6 | David Black | Finance | 3 |
L'opérateur UNION est utilisé dans la requête ci-dessous pour combiner les informations des tables employee et manager.
SELECT employeeID, employeeName, department
FROM employees
UNION
SELECT employeeID, employeeName, department
FROM managers;Le résultat est le suivant :
| employeeID | employeeName | department |
|---|---|---|
| 1 | John Doe | Sales |
| 2 | Jane Smith | Marketing |
| 3 | Bob Johnson | Finance |
| 4 | Alice Brown | Sales |
| 5 | Charlie White | Marketing |
| 6 | David Black | Finance |
Il n'y a pas de doublon dans le résultat affiché.
Question 12.1
Utiliser les tables order1, order2 et order3 situées dans la base de données northWind pour afficher toutes les commandes dans une seule table. Pour accéder à la console SQL.
Question 12.2
Reprendre le résultat de la question précédente et ajouter une colonne appelée source qui prendra la valeur 'order1', 'order2' ou 'order3' en fonction de la table source de la ligne. Pour accéder à la console SQL.
Indice
Le chapitre 6 montre comment ajouter [une constante](06manipChamps/#ajout-de-constantes) comme nouveau champ.UNION ALL
L'opérateur UNION élimine automatiquement les doublons des résultats combinés, ce qui peut entraîner un coût de performance supplémentaire car le système doit identifier et supprimer les duplicatas. En revanche, l'opérateur UNION ALL ne supprime pas les doublons et renvoie toutes les lignes des résultats combinés, ce qui peut être plus rapide car il évite cette étape de déduplication.
Question 12.3
Est-ce qu'il y a des doublons entre les lignes des tables order1, order2 et order3? Pour accéder à la console SQL.
Indice
Comparer le nombre de ligne en utilisant UNION et UNION ALL.En résumé, l'utilisation de l'opérateur UNION ALL est une option à privilégier si le fait d'avoir des doublons n'est pas dérangeant et que la performance est une priorité. Sinon l'opérateur UNION permet d'éliminer automatiquement les doublons.
Question 12.4
Quelle option est plus appropriée ici UNION ou UNION ALL ? Pourquoi ?
SQL Console
| Category | Num | Sales Usd |
|---|---|---|
| ABC | 123 | $26.4M |