..


Liens sponsorisés

Utiliser UNION pour combiner les résultats des deux tables

Article écrit par Max Bossi

Le langage SQL nous offre un moyen assez simple de combiner, dans la même instruction SELECT, les résultats de deux tables différentes.

Pour y parvenir, il est temps d'utiliser all'opertore union qui sera, en fait, l'union des résultats obtenus en interrogeant les deux tables.

Notez que pour pouvoir être utilisé correctement, il est temps que l'opérateur UNION:

  • que les tables sont interrogés sur le même nombre de colonnes;
  • demande que les colonnes ont le même nom;
  • que les colonnes nécessaires dans les deux tableaux ont des types de données compatibles;
Prenons un exemple: disons que d'avoir à opérer sur une base de données des agences de voyages hypothétiques et supposons que notre DB ne contient que deux tables:
  • hotel_italia
    • Nom
    • étoiles
    • la ville
    • nation
  • hotel_europa
    • Nom
    • étoiles
    • la ville
    • nation
Maintenant, supposons que le client veut que nous sachions ce soit l'offre d'hôtels en Italie et en Europe:





 SELECT nom, étoiles, ville, pays







 D'hotel_italia







 UNION







 SELECT nom, étoiles, ville, pays







 D'hotel_europa



Avec cette requête, nous obtenir une liste complète de tous les hôtels dans les deux tableaux:

Nom étoiles la ville nation
Hôtel Cavour 4 Rome FR
Hôtel Miramare 2 Catholique FR
Hôtel Manzoni 2 Milan FR
Hôtel Espana 3 Madrid ES
Hilton 5 London Royaume-Uni
Hôtel am Schlossgarten 4 Stuttgart DE

Remarque: s'il vous plaît noter que l'opérateur UNION ne montre pas d'enregistrements en double (par défaut fonctionne comme s'il s'agissait d'un SELECT DISTINCT ), et si vous voulez tout doublons montrent également (repense à notre exemple, à un hôtel dans cette tant dans le tableau de cette hotel_europa hotel_italia) aura besoin d'utiliser UNION ALL.

Trier et limiter les résultats découlant de UNION

Supposons que les résultats de l'utilisation de l'union et de nombreux veux qu'ils soient limités à un numéro spécifié. Comment faire? Voici une solution:

 



 SELECT * FROM







 (SELECT nom, étoiles, ville, pays FROM hotel_italia







 UNION







 SELECT nom, étoiles, ville, pays hotel_europa DE)







 AS Hôtel







 ORDER BY DESC LIMIT 10 étoiles

 
En substance, nous traitons les résultats découlant de l'union de deux ou plusieurs tables comme si elles étaient le résultat d'une seule table, ce faisant, nous pouvons utiliser le tri et la limite de la normale.

Dans la même catégorie ...
E-Learning
Cours de MS Access Cours de MS Access
Apprenez à créer et gérer des bases de données facilement et rapidement. A partir de 29 €.
Cours MySQL Cours MySQL
Gestion des bases de données open-source. A partir de 39 €.
Base de données de cours et SQL Base de données de cours et SQL
Créer et gérer des bases de données relationnelles. A partir de 39 €.
Liens sponsorisés