TOP

Instruction SQL UNION

SQL UNION descriptif

L'opérateur UNION est utilisé pour combiner le jeu de résultats de deux ou plusieurs instructions SELECT.

  • Chaque instruction SELECT dans UNION doit avoir le même nombre de colonnes
  • Les colonnes doivent également avoir des types de données similaires
  • Les colonnes de chaque instruction SELECT doivent également être dans le même ordre

  • Syntaxe UNION

    SELECT column_name(s) FROM table1
    UNION
    SELECT column_name(s) FROM table2
    

    UNION ALL Syntaxe

    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
    
    Les noms de colonnes dans le jeu de résultats correspondent généralement aux noms de colonnes dans la première instruction SELECT.

    Base de données de démonstration

    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") :

    CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
    1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
    2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
    3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
    4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
    5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

    Et l'échantillon du tableau "Suppliers" ("Fournisseurs") :

    SupplierIDSupplierNameContactNameAddressCityPostalCodeCountryPhone
    1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK(171) 555-2222
    2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA(100) 555-4822
    3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA(313) 555-5735
    4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan(03) 3555-5011
    5Cooperativa de Quesos 'Las Cabras'Antonio del Valle SaavedraCalle del Rosal 4Oviedo33007Spain(98) 598 76 54

    Exemple SQL UNION

    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
    
    Si certains clients ou fournisseurs ont la même ville (City), chaque ville ne sera spécifiée qu'une seule fois car UNION ne sélectionne que des valeurs différentes. Utilisez UNION ALL pour sélectionner également les valeurs en double !

    Exemple SQL UNION ALL

    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
    

    SQL UNION avec WHERE

    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
    

    SQL UNION ALL avec WHERE

    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
    

    Un autre exemple SQL UNION

    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".