Back-end · 5 mondes · 15 étapes
Bases de données & SQL
Interroger, relier, modifier et concevoir des données, avec une vraie base SQLite.
Progression
0 %
0/15 étapes terminées
Intermédiaire · 10 min de lecture
Les jointures
Une information à un seul endroit, reliée partout
1Définition
Une base normalisée range chaque information une seule fois et relie les tables par des clés. La jointure reconstitue la vue complète : JOIN ne garde que les lignes qui se correspondent, LEFT JOIN garde toutes celles de la table de gauche.
2Principes fondamentaux
01
Toujours une condition ON
Sans elle, chaque ligne est associée à chaque ligne : le produit cartésien.
02
Des alias courts
FROM resultats r JOIN joueurs j : plus lisible, et sans ambiguïté quand deux tables ont un id.
03
LEFT JOIN pour ne perdre personne
Les joueurs sans résultat restent, avec des NULL à droite.
04
Compter une colonne de droite
COUNT(r.mission_id) donne 0 aux lignes sans correspondance ; COUNT(*) donnerait 1.
3Exemples pratiques
Trois tables
1SELECT j.pseudo, m.titre, r.precision2FROM resultats r3JOIN joueurs j ON j.id = r.joueur_id4JOIN missions m ON m.id = r.mission_id;La table centrale (les résultats) relie les deux autres par leurs identifiants.
Trouver les absents
1SELECT j.pseudo2FROM joueurs j3LEFT JOIN resultats r ON r.joueur_id = j.id4WHERE r.joueur_id IS NULL;5-- cy, eveLe motif « LEFT JOIN … WHERE droite IS NULL » trouve tout ce qui n'a pas de correspondance.
4Erreurs courantes
Oublier ON
À éviter
SELECT * FROM joueurs, resultats;À faire
SELECT * FROM joueurs j JOIN resultats r ON r.joueur_id = j.id;Pourquoi : 6 × 10 = 60 lignes absurdes, et des millions sur de vraies tables.
Filtrer la droite dans WHERE après un LEFT JOIN
À éviter
LEFT JOIN resultats r ON r.joueur_id = j.id WHERE r.precision > 80À faire
LEFT JOIN resultats r ON r.joueur_id = j.id AND r.precision > 80Pourquoi : Le WHERE élimine les NULL et transforme le LEFT JOIN en jointure interne.
Colonne ambiguë
À éviter
SELECT id FROM joueurs JOIN resultats …À faire
SELECT j.id FROM joueurs j JOIN resultats r …Pourquoi : Si deux tables ont la colonne, la base ne sait pas laquelle choisir.
5Subtilités à connaître
- ◆L'ordre des JOIN n'influe pas sur le résultat d'une jointure interne, seulement sur la lisibilité ; pour un LEFT JOIN, il compte.
- ◆
USING (colonne)abrègeON a.colonne = b.colonnequand les deux colonnes ont le même nom. - ◆Une jointure sur une colonne non indexée oblige à relire toute la table : on indexe les clés étrangères interrogées.
6Vérifie ta compréhension
Question 1/3
Score 0
Pour garder les joueurs sans résultat…
Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.