SQL UNION ALL

La commande UNION ALL de SQL est très similaire à la commande UNION. Elle permet de concaténer les enregistrements de plusieurs requêtes, à la seule différence que cette commande permet d’inclure tous les enregistrements, même les doublons. Ainsi, si un même enregistrement est présents normalement dans les résultats des 2 requêtes concaténées, alors l’union des 2 avec UNION ALL retournera 2 fois ce même résultat.

A savoir : tout comme la commande UNION, il convient que les 2 requêtes retournes exactement le même nombre de colonnes, avec les mêmes types de données et dans le même ordre.

Syntaxe

La syntaxe de la requête SQL pour unir les résultats des 2 tables est la suivante:

SELECT * FROM table1
UNION ALL
SELECT * FROM table2

Exemple

Imaginons une entreprise qui possède des bases de données dans chacun de ces magasins. Sur ces bases de données il y a une table de la liste des clients avec quelques informations et le total des achats dans l’entreprise.

La table « magasin1_client » correspond au premier magasin :

prenomnomvilledate_naissancetotal_achat
LéonDupuisParis1983-03-06135
MarieBernardParis1993-07-0375
SophieDupondMarseille1986-02-2227
MarcelMartinParis1976-11-2439

La table « magasin2_client » correspond au deuxième magasin :

prenomnomvilledate_naissancetotal_achat
MarionLeroyLyon1982-10-27285
PaulMoreauLyon1976-04-19133
MarieBernardParis1993-07-0375
MarcelMartinParis1976-11-2439

Pour concaténer les tous les enregistrements de ces tables, il est possible d’effectuer une seule requête utilisant la commande UNION ALL, comme l’exemple ci-dessous :

SELECT * FROM magasin1_client
UNION ALL
SELECT * FROM magasin2_client

Résultat :

prenomnomvilledate_naissancetotal_achat
LéonDupuisParis1983-03-06135
MarieBernardParis1993-07-0375
SophieDupondMarseille1986-02-2227
MarcelMartinParis1976-11-2439
MarionLeroyLyon1982-10-27285
PaulMoreauLyon1976-04-19133
MarieBernardParis1993-07-0375
MarcelMartinParis1976-11-2439

Le résultat de cette requête montre qu’il y a autant d’enregistrement que dans les 2 tables réunis. A savoir, il y a quelques clients qui étaient présents dans les 2 tables d’origines en conséquent ils sont présent 2 fois dans le résultat de cette requête SQL.

Partager