L'opérateur UNION est utilisé pour combiner le jeu de résultats de deux ou plusieurs instructions SELECT.
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2
L'opérateur UNION sélectionne uniquement des valeurs distinctes par défaut. Pour autoriser les valeurs en double, utilisez UNION ALL :
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2
Dans ce tutoriel nous utiliserons la célèbre base de données exemple "Northwind".
Vous trouverez ci-dessous un exemple de la table "Customers" ("Clients") :
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Et l'échantillon du tableau "Suppliers" ("Fournisseurs") :
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country | Phone |
---|---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK | (171) 555-2222 |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA | (100) 555-4822 |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA | (313) 555-5735 |
4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai Musashino-shi | Tokyo | 100 | Japan | (03) 3555-5011 |
5 | Cooperativa de Quesos 'Las Cabras' | Antonio del Valle Saavedra | Calle del Rosal 4 | Oviedo | 33007 | Spain | (98) 598 76 54 |
L'instruction SQL suivante sélectionne les villes (valeurs différentes uniquement) dans les tables Clients et Fournisseurs :
Run SQLSELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City
L'instruction SQL suivante sélectionne les villes (également les valeurs en double) dans les tables Clients et Fournisseurs :
Run SQLSELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City
L'instruction SQL suivante sélectionne les villes allemandes (valeurs différentes uniquement) dans les tables Clients et Fournisseurs :
Run SQLSELECT City, Country FROM Customers
WHERE Country = 'Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country = 'Germany'
ORDER BY City
L'instruction SQL suivante sélectionne les villes allemandes (également des valeurs en double) dans les tables Clients et Fournisseurs :
Run SQLSELECT City, Country FROM Customers
WHERE Country = 'Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country = 'Germany'
ORDER BY City
L'instruction SQL suivante répertorie tous les clients et fournisseurs :
Run SQLSELECT 'Customer' AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers
Notez que le "AS Type" ci-dessus est un alias. Les alias SQL sont utilisés pour donner un nom temporaire à une table ou à une colonne. L'alias n'existe que pendant la durée de la demande. Nous avons donc créé ici une colonne temporaire appelée "Type" qui indique si le contact est un "Client" ou un "Vendeur".