Seb-Info

Les jointures en SQL

Les jointures en SQL

Objectif

Comprendre comment relier plusieurs tables dans une base de données relationnelle
pour exploiter les relations entre les données.

Pourquoi faire une jointure ?

Les données sont souvent réparties dans plusieurs tables.
Une jointure (JOIN) permet de croiser ces données selon une relation logique.

Exemple :

Table adherent

id nom prenom
1 Durand Alice
2 Martin Paul

Table emprunt

id id_adherent id_livre date_emprunt
1 1 2 2025-11-10
2 2 3 2025-11-11

Objectif : afficher le nom de l’adhérent avec la date d’emprunt.

INNER JOIN – Jointure interne

Affiche uniquement les lignes qui ont une correspondance dans les deux tables.

SELECT a.nom, a.prenom, e.date_emprunt
FROM adherent a
INNER JOIN emprunt e
  ON a.id = e.id_adherent;
nom prenom date_emprunt
Durand Alice 2025-11-10
Martin Paul 2025-11-11

L’INNER JOIN ignore les adhérents sans emprunt.

LEFT JOIN – Jointure gauche

Affiche toutes les lignes de la table de gauche (adherent),
même si aucune correspondance n’existe dans la table de droite.

SELECT a.nom, a.prenom, e.date_emprunt
FROM adherent a
LEFT JOIN emprunt e
  ON a.id = e.id_adherent;
nom prenom date_emprunt
Durand Alice 2025-11-10
Martin Paul 2025-11-11
Lefevre Chloé NULL

Les valeurs NULL indiquent qu’aucun emprunt n’a été trouvé.

RIGHT JOIN – Jointure droite

Affiche toutes les lignes de la table de droite (emprunt),
même si aucune correspondance n’existe dans la table de gauche (adherent).

SELECT a.nom, a.prenom, e.date_emprunt
FROM adherent a
RIGHT JOIN emprunt e
  ON a.id = e.id_adherent;
nom prenom date_emprunt
Durand Alice 2025-11-10
Martin Paul 2025-11-11
NULL NULL 2025-11-12

À retenir : le RIGHT JOIN renvoie toutes les lignes d’emprunt, même sans adhérent correspondant.

FULL OUTER JOIN

Affiche toutes les lignes des deux tables, qu’elles aient une correspondance ou non.

Non supporté directement par MySQL, mais on peut le simuler avec une union :

SELECT a.nom, a.prenom, e.date_emprunt
FROM adherent a
LEFT JOIN emprunt e ON a.id = e.id_adherent
UNION
SELECT a.nom, a.prenom, e.date_emprunt
FROM adherent a
RIGHT JOIN emprunt e ON a.id = e.id_adherent;

Résumé visuel

Type de jointure Lignes affichées
INNER JOIN Seulement les correspondances
LEFT JOIN Toutes les lignes de la table gauche
RIGHT JOIN Toutes les lignes de la table droite
FULL OUTER JOIN Toutes les lignes des deux tables

À retenir

  • INNER JOIN : croisement strict
  • LEFT JOIN : priorité à la table de gauche
  • RIGHT JOIN : priorité à la table de droite
  • FULL JOIN : tout le monde !

Exercice 1 pratique : maîtriser les jointures SQL

Nous utiliserons trois tables d’exemple :

Table adherent

id nom prenom
1 Durand Alice
2 Martin Paul
3 Lefevre Chloé

Table livre

id titre
1 Le Petit Prince
2 1984
3 Dune

Table emprunt

id id_adherent id_livre date_emprunt
1 1 2 2025-11-10
2 3 1 2025-11-11

Questions

  1. Affiche le nom des adhérents et le titre des livres qu’ils ont empruntés.
  2. Affiche tous les livres, même ceux qui n’ont pas encore été empruntés.
  3. Affiche tous les adhérents, même ceux qui n’ont jamais emprunté de livre.

Ce contenu est réservé aux membres du site. Si vous êtes un utilisateur existant, veuillez vous connecter. Les nouveaux utilisateurs peuvent s'inscrire ci-dessous.

Connexion pour les utilisateurs enregistrés
   
Nouvel utilisateur ?
*Champ requis
Powered by WP-Members