Union
Fait partie de la section Les fondamentaux du Journey SQL de Coddy — leçon 48 sur 72.
Les unions sont différentes des jointures. Les jointures utilisent des conditions pour combiner des tables, mais les unions ajoutent simplement deux tables l'une sur l'autre. Pour utiliser UNION, nous écrirons :
SELECT col1, col2, ... FROM table1
UNION
SELECT col1, col2, ... FROM table2Les deux instructions SELECT doivent respecter les règles suivantes :
- Le nombre de champs doit être égal
- L'ordre est important
- Les colonnes situées à la même position doivent avoir des types de données correspondants
Par exemple, supposons que nous ayons les tables suivantes :
germany_people
| id | nom |
| 1 | Lena |
| 2 | Leonie |
england_people
| id | name |
| 1 | George |
| 2 | Lena |
Problème : Nous voulons créer une seule grande table de tous les noms que nous avons.
SELECT name from germany_people
UNION
SELECT name from england_peopleRésultat :
| nom |
| Lena |
| Leonie |
| George |
UNION retourne uniquement des valeurs distinctes tandis que UNION ALL retourne tous les enregistrements tels quels :
SELECT name from germany_people
UNION ALL
SELECT name from england_peopleRésultat :
| nom |
| Lena |
| Leonie |
| George |
| Lena |
Vous pouvez également combiner UNION ALL avec les fonctions d'agrégation, GROUP BY et ORDER BY pour synthétiser des données provenant de plusieurs tables. L'astuce consiste à envelopper le UNION ALL à l'intérieur d'une sous-requête, puis à appliquer le regroupement et le tri par-dessus.
Par exemple, supposons que nous voulions compter combien de fois chaque nom apparaît dans les deux tables :
SELECT name, COUNT(*) AS total_count
FROM (
SELECT name FROM germany_people
UNION ALL
SELECT name FROM england_people
) AS combined
GROUP BY name
ORDER BY total_count DESCRésultat :
| nom | total_count |
| Lena | 2 |
| Leonie | 1 |
| George | 1 |
Ici, UNION ALL (non UNION) est utilisé pour que les doublons comme Lena soient conservés — sinon ils seraient supprimés avant le comptage. La sous-requête fusionne toutes les lignes, puis GROUP BY + COUNT les résument. ORDER BY trie le résultat final.
Défi
FacileTables et colonnes disponibles :
<strong>sales_2009</strong>:<strong>product_id</strong>,<strong>quantity_sold</strong><strong>sales_2010</strong>:<strong>product_id</strong>,<strong>quantity_sold</strong><strong>sales_2011</strong>:<strong>product_id</strong>,<strong>quantity_sold</strong>
Il y a 3 tables de ventes.
Trouvez la somme des ventes pour chaque produit de toutes les tables réunies.
Le résultat doit inclure le product_id et le total des ventes.
Nommez cette colonne total_sales.
Triez les résultats par le total des ventes par ordre décroissant.
Essayez vous-même
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les fondamentaux
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns