Cours SQL et MySQL · Module 8: Sous-requêtes

UNION et UNION ALL

2 min de lecture
Dans cette leçon3

Le dernier couloir du Labyrinthe enseigne la combinaison d'ensembles. Jusqu'ici, chaque requête renvoyait une seule liste. Nous allons maintenant prendre deux requêtes et coller leurs résultats en une seule liste grâce aux opérateurs UNION et UNION ALL.

UNION - combiner des ensembles

L'opérateur UNION colle les résultats de deux requêtes en une seule liste. Les deux requêtes doivent renvoyer le même nombre de colonnes de types compatibles :

1SELECT tytul FROM ksiazki WHERE kategoria_id = 1
2UNION
3SELECT tytul FROM ksiazki WHERE kategoria_id = 2;

UNION supprime les doublons - si le même titre apparaît dans les deux requêtes, il ne s'affiche qu'une seule fois.

UNION ALL - avec les doublons

UNION ALL fonctionne de la même façon, mais garde toutes les lignes, y compris les répétitions :

1SELECT tytul FROM ksiazki WHERE kategoria_id = 1
2UNION ALL
3SELECT tytul FROM ksiazki WHERE kategoria_id = 2;

C'est plus rapide, car la Bibliothèque n'a pas besoin de trouver et de supprimer les doublons. Choisis cette option quand les doublons ne te dérangent pas.

Combiner des tables différentes

UNION n'exige pas que les deux requêtes proviennent de la même table. Un nombre et des types de colonnes correspondants suffisent :

1SELECT imie FROM autorzy
2UNION
3SELECT imie FROM czytelnicy;

Cela nous donne une seule liste de prénoms - à la fois les créateurs et les lecteurs de la Bibliothèque.

Tu as repéré une erreur dans cette leçon ?

Teste tes connaissances

Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.

  1. 1. Que fait l'opérateur UNION avec les résultats de deux requêtes ?

  2. 2. Quelle condition doivent respecter deux requêtes combinées avec l'opérateur UNION ?

Voici 2 des 3 questions de cette leçon. Réponds aux autres dans le jeu.

Tâches pratiques dans le jeu

  • Clique dans l'ordre

    Clique sur les éléments dans l'ordre pour construire une requête qui joint deux listes de titres avec l'opérateur UNION :

  • Éditeur de code

    Écris une requête qui utilise UNION pour combiner les titres des livres de la catégorie kategoria_id = 1 et les titres des livres de la catégorie kategoria_id = 2. Dans les deux requêtes, sélectionne la colonne tytul de la table ksiazki.

  • Tri vertical

    Ordonne (de haut en bas) les lignes de la requête qui joint deux listes de titres avec l'opérateur UNION ALL :

  • Éditeur de code

    Écris une requête qui utilise UNION ALL pour combiner les titres des livres de la catégorie kategoria_id = 1 et les titres des livres de la catégorie kategoria_id = 2. Dans les deux requêtes, sélectionne la colonne tytul de la table ksiazki.