Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Aperçu

Les jointures

Voici la première page de la leçon. Lis-la et essaie les activités. La suite est dans le cours complet.

45 minutes

Le titre et son auteur

Tu as rangé les livres du CDI dans deux tables. Dans livres, il y a un numéro d'auteur. Dans auteurs, il y a le nom.

Mais la documentaliste veut une seule liste : le titre, puis le nom. Pas un numéro !

Il faut demander à la base de recoller les deux tables. Cela s'appelle une jointure.

Mots-clés

MotCe que ça veut direExemple
JointureUne requête qui recolle les lignes de deux tables, grâce à un lien.Un livre et son auteur.
JOINLe mot SQL qui joint une deuxième table. En français : « joindre ».FROM livres JOIN auteurs
ONLe mot qui donne la condition du lien : quelle colonne égale quelle colonne.ON livres.auteur_id = auteurs.id
PréfixeLe nom de la table écrit devant une colonne, avec un point.livres.titre
Alias de tableUn nom court donné à une table, avec AS.livres AS l
LEFT JOINUne jointure qui garde toutes les lignes de la table de gauche, même sans lien.auteurs LEFT JOIN livres
NULLUne case vide : on ne connaît pas la valeur, ou il n'y en a pas.Un auteur sans livre.
Clé étrangèreLa colonne qui garde le numéro d'une ligne d'une autre table.livres.auteur_id

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Recoller deux tables

Pour chaque livre, la base regarde son auteur_id. Elle cherche la ligne de auteurs qui a ce numéro comme id. Puis elle colle les deux lignes.

C'est ce que tu as fait à la main dans la leçon précédente. Maintenant, la base le fait pour toi, pour tous les livres d'un coup.

À toi : ta première jointure

Code: sql
-- JOIN colle les lignes des deux tables.
-- ON dit quelle colonne doit être égale à quelle colonne.
SELECT livres.titre, auteurs.nom
FROM livres
JOIN auteurs ON livres.auteur_id = auteurs.id;

-- Change l'ordre : SELECT auteurs.nom, livres.titre ...

Exemple travaillé : le recollage, livre par livre

Livreauteur_idAuteur trouvé (id = auteur_id)Ligne du résultat
Les Misérables1Victor HugoLes Misérables, Victor Hugo
Notre-Dame de Paris1Victor HugoNotre-Dame de Paris, Victor Hugo
La Gloire de mon père2Marcel PagnolLa Gloire de mon père, Marcel Pagnol
Le Malade imaginaire3MolièreLe Malade imaginaire, Molière
Vingt mille lieues sous les mers4Jules VerneVingt mille lieues sous les mers, Jules Verne
Le Château de ma mère2Marcel PagnolLe Château de ma mère, Marcel Pagnol

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

À toi : devine le résultat

À toi de jouer

À toi : devine le résultat

3 questions
Essayez : vos réponses sont notées ici puis oubliées. Connectez-vous si vous voulez conserver votre score et reprendre là où vous en étiez.Se connecter pour conserver mon score

Tes réponses sont corrigées ici et ne sont pas conservées. Un compte garde tes résultats.

Les préfixes et les alias

Si deux tables ont une colonne du même nom, comme id, la base ne sait pas laquelle tu veux. Tu écris donc la table devant : livres.titre.

C'est long. Donne un nom court à chaque table avec AS : livres AS l. Puis écris l.titre.

Tu peux ajouter WHERE, ORDER BY et LIMIT comme avant.

À toi : des noms courts

Code: sql
-- On donne un nom court à chaque table : l pour livres, a pour auteurs.
SELECT l.titre, a.nom
FROM livres AS l
JOIN auteurs AS a ON l.auteur_id = a.id
WHERE a.nom = 'Victor Hugo';

-- Essaie avec 'Marcel Pagnol'.

Ne jamais oublier le lien

Attention

Sans la condition du lien, la base colle chaque livre avec chaque auteur. Avec 6 livres et 5 auteurs, cela fait 6 fois 5, donc 30 lignes, presque toutes fausses.

La leçon continue

11 parties de plus de cette leçon se trouvent dans le cours complet, avec les exercices et la vérification finale. Un compte te donne tout.