Cours SQL et MySQL · Module 7: Joindre des tables (JOIN)

Joindre trois rayons à la fois

2 min de lecture
Dans cette leçon3

Le pont ne doit pas forcément relier seulement deux ailes. Les clauses JOIN peuvent être enchaînées, ajoutant rayon après rayon - un JOIN après l'autre.

Deux ponts : livre, auteur et catégorie

Un livre a deux références croisées : autor_id (vers autorzy) et kategoria_id (vers kategorie). Nous pouvons traverser les deux ponts en une seule requête :

1SELECT k.tytul, a.nazwisko, kat.nazwa
2FROM ksiazki k
3INNER JOIN autorzy a ON k.autor_id = a.id
4INNER JOIN kategorie kat ON k.kategoria_id = kat.id;

Chaque INNER JOIN supplémentaire jette un nouveau pont et ajoute des colonnes d'un nouveau rayon. Les alias (k, a, kat) nous permettent de désigner sans ambiguïté la table d'où vient chaque colonne.

Une chaîne de jointures autour des emprunts

Le plus souvent, nous joignons trois rayons autour de la table wypozyczenia. La table wypozyczenia elle-même n'est qu'un ensemble de nombres : qui (czytelnik_id), quoi (ksiazka_id), quand (data_wypozyczenia). Pour la transformer en un rapport lisible, nous ajoutons les noms de famille et les titres :

1SELECT w.data_wypozyczenia, c.nazwisko, k.tytul
2FROM wypozyczenia w
3INNER JOIN czytelnicy c ON w.czytelnik_id = c.id
4INNER JOIN ksiazki k ON w.ksiazka_id = k.id;

Par quelle table commencer ?

Il est utile de commencer (FROM) par la table qui détient les références croisées vers les autres - ici wypozyczenia. Les ponts mènent d'elle vers czytelnicy et ksiazki, si bien que les jointures suivantes se mettent en place naturellement. Pont après pont - et les nombres se transforment en récit !

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. Comment joint-on trois tables en une seule requête ?

  2. 2. Pour afficher la date d'emprunt, le lecteur et le titre du livre, par quelle table est-il le plus pratique de commencer (FROM) et d'y attacher le reste ?

Tâches pratiques dans le jeu

  • Tri horizontal

    Ordonne sur une ligne la clause qui attache correctement la table kategorie au rapport (de gauche à droite) :

  • Éditeur de code

    Écris une requête qui affiche le tytul du livre, le nazwisko de l'auteur et le nom de la catégorie (nazwa). Joins ksiazki (alias k) avec autorzy (alias a) sur k.autor_id = a.id et avec kategorie (alias kat) sur k.kategoria_id = kat.id, grâce à INNER JOIN.

  • Tri vertical

    Ordonne les parties d'une requête qui joint trois tables (wypozyczenia, czytelnicy, ksiazki) dans le bon ordre (de haut en bas) :

  • Éditeur de code

    Écris une requête qui affiche data_wypozyczenia, le nazwisko du lecteur et le tytul du livre emprunté. Joins wypozyczenia w avec czytelnicy c (sur w.czytelnik_id = c.id) et avec ksiazki k (sur w.ksiazka_id = k.id) grâce à INNER JOIN.

  • Clique dans l'ordre

    Clique sur les éléments dans l'ordre pour construire une requête qui joint ksiazki avec kategorie :

  • Éditeur de code

    Écris une requête qui affiche tytul, le nazwisko de l'auteur, le nom de la catégorie (nazwa) et le rok_wydania du livre. Joins ksiazki (k) avec autorzy (a) sur k.autor_id = a.id et avec kategorie (kat) sur k.kategoria_id = kat.id, grâce à INNER JOIN.