Logo de kxs.frCours d'informatique pour le lycée et la prépa

Jointure

Ce sont les jointures qui font la puissance des bases de données. Elles permettent d'associer des lignes de table différentes dans des requêtes.

Exemple

Nous avons une correspondance entre nos deux tables grâce à la clé étrangère id_film qui fait le lien entre les citations et leur film. Il n'est néanmoins pas pratique de devoir regarger le film de la citation dans une autre table. Pour que tout s'affiche en une seule fois nous allons utiliser une jointure :

SELECT texte, titre FROM citations JOIN films ON citations.id_film = films.id_film;

Cette requête renvoie alors la table suivante (avec votre citation en plus) :

+--------------------------------------------------------------------------------------------------+-------------------------------------------+
| texte                                                                                            | titre                                     |
+--------------------------------------------------------------------------------------------------+-------------------------------------------+
| Vers l'infini et au-delà !                                                                       | Toy Story                                 |
| Allez bonne nuit, et tâche de dormir sinon je vends tout tes jouets !                            | Avengers : Endgame                        |
| Avengers rassemblement !                                                                         | Avengers : Endgame                        |
| La fin fait partie du voyage.                                                                    | Avengers : Endgame                        |
| C'est dans ses rêves que l'homme trouve la liberté, cela fut, est, et restera la vérité.         | Le cercle des poètes disparus             |
| C'est seulement quand on a tout perdu qu'on est libre de faire tout ce qu'on veut.               | Fight Club                                |
| On a frôlé la vie !                                                                              | Fight Club                                |
| Monsieur, quand le doigt montre le ciel, l'imbécile regarde le doigt.                            | Le fabuleux destin d'Amélie Poulain       |
| Ou tu sors ou je te sors, mais faudra prendre une décision.                                      | Dikkenek                                  |
| Ce n'est pas parce que tu as une personnalité que tu as de la personnalité.                      | Pulp Fiction                              |
| C'est à une demi-heure d'ici. J'y suis dans dix minutes.                                         | Pulp Fiction                              |
| Je préfère partir plutôt que d'entendre ça plutôt que d'être sourd !                             | La classe américaine                      |
| Raté, vous nous avez raté ! Eh les romains, vous êtes des romaines !                             | Astérix et Obélix : mission Cléopâtre     |
| À mon signal, déchaine les enfers.                                                               | Gladiator                                 |
| Cours Forrest, cours !                                                                           | Forrest Gump                              |
+--------------------------------------------------------------------------------------------------+-------------------------------------------+
15 rows in set (0.00 sec)

Elle se décompose comme ceci :

La jointure fait alors correspondre les éléments des deux tables qui ont le même id_film.

1) Proposez et testez une requête affichant les citations, films et années pour les films avant les années 2000.

SELECT texte, titre, annee FROM citations JOIN films ON citations.id_film = films.id_film WHERE annee < 2000;

Il est possible d'effectuer plusieurs jointures en rajoutant des clauses JOIN … ON ….