CodeGym /Cours /SQL SELF /Introduction à la jointure de données : JOIN

Introduction à la jointure de données : JOIN

SQL SELF
Niveau 11 , Leçon 0
Disponible

Aujourd'hui, on passe à un des sujets les plus cools quand tu bosses avec des bases de données relationnelles — combiner des données de plusieurs tables avec JOIN. C'est un outil super puissant qui t'ouvre la porte à des analyses et des relations complexes.

Imagine que ta base de données, c'est une énorme BD, où chaque table séparée est une case différente. Pour raconter toute l'histoire, tu dois relier ces cases. C'est exactement ce que fait JOIN. La jointure de données, c'est le process qui permet à ta requête de récupérer des infos de plusieurs tables et de les relier selon des conditions précises.

Les bases de données relationnelles sont construites autour de la notion de relations entre les tables. Chaque table stocke des infos sur une entité précise, et pour avoir une vue d'ensemble, on veut souvent relier les données de différentes tables. Par exemple :

  • La table students contient la liste des étudiants.
  • La table courses garde la liste des cours.
  • La table enrollments montre qui suit quels cours.

Pour savoir quel étudiant suit quel cours, il faut relier ces tables. En entretien, un dev qui maîtrise JOIN fait tout de suite sérieux, parce que c'est une des compétences les plus recherchées en data.

Les principaux types de jointures

Dans PostgreSQL, il existe plusieurs types de JOIN, chacun fait pour des cas précis. On va les voir en mode général, histoire de pas se prendre la tête avec des exemples trop tordus tout de suite :

Type de JOIN Description
INNER JOIN Renvoie les lignes qui ont une correspondance dans les deux tables.
LEFT JOIN Renvoie toutes les lignes de la table de gauche, et seulement les correspondances de la table de droite.
RIGHT JOIN Renvoie toutes les lignes de la table de droite, et seulement les correspondances de la table de gauche.
FULL OUTER JOIN Renvoie toutes les lignes des deux tables, en mettant NULL là où il n'y a pas de correspondance.

Le choix du JOIN dépend de ce que tu veux faire :

  • Si tu veux seulement les données qui matchent dans les deux tables, utilise INNER JOIN.
  • Si tu veux garder toutes les données d'une table, et juste les correspondances de l'autre, prends LEFT JOIN ou RIGHT JOIN.
  • Si tu veux tout, même ce qui ne matche pas, utilise FULL OUTER JOIN.

Allez, on va voir tout ça en pratique.

Exemple de problème — "Qui est dans quel cours ?"

Imaginons qu'on a trois tables :

Table students

id name
1 Otto
2 Anna
3 Peter

Table courses

id title
101 Mathématiques
102 Anglais

Table enrollments

student_id course_id
1 101
2 102

Ces tables sont reliées comme ça :

  • La colonne id dans students — identifiant unique de l'étudiant.
  • La colonne id dans courses — identifiant unique du cours.
  • Dans la table enrollments, les colonnes student_id et course_id créent le lien entre étudiants et cours.

Disons qu'on veut répondre à la question suivante : quel étudiant est inscrit à quel cours ?

On peut avoir la réponse avec un JOIN. On va relier les tables selon leurs liens :

  • On relie students et enrollments sur id = student_id.
  • On relie enrollments et courses sur course_id = id.

Voilà à quoi ressemble la requête SQL :

SELECT students.name, courses.title
FROM enrollments
JOIN students ON enrollments.student_id = students.id
JOIN courses ON enrollments.course_id = courses.id;

Ce que fait cette requête :

  • FROM enrollments — on commence par la table qui relie étudiants et cours.
  • JOIN students ON enrollments.student_id = students.id — on ajoute les étudiants pour avoir leurs noms.
  • JOIN courses ON enrollments.course_id = courses.id — on ajoute les cours pour avoir les titres.

Le résultat sera comme ça :

name title
Otto Mathématiques
Anna Anglais

À noter : si un étudiant n'a aucun cours, il n'apparaîtra pas dans le résultat — parce que JOIN est strict par défaut (INNER JOIN). On verra plus tard comment inclure aussi ces étudiants avec LEFT JOIN.

Si tu piges pas tout dans cette requête, t'inquiète ! On va tout décortiquer dans les prochaines leçons !

Pourquoi c'est utile dans la vraie vie ?

Maintenant que tu vois comment relier des tables, parlons concret. Tu t'es déjà demandé comment marche un site e-commerce ? Genre, quand tu choisis un smartphone et que tu vois les avis des autres utilisateurs.

  1. La table products contient les infos sur les produits.
  2. La table reviews contient les avis des clients.
  3. La table customers contient les infos sur les clients eux-mêmes

Pour afficher les avis sur le site, il faut joindre les tables products, reviews et customers. Voilà le JOIN en action.

À quoi faire gaffe ?

Avant de plonger à fond dans les JOIN dans les prochaines leçons, voilà deux-trois trucs à retenir :

  1. L'ordre dans le JOIN compte. Par exemple, LEFT JOIN renvoie les lignes de la table de gauche, donc si tu changes l'ordre, tu changes le résultat.
  2. Travaille avec des petites tables. Au début, évite de lancer des requêtes sur des millions de lignes. Même la requête la plus simple doit rester claire.
  3. Pense toujours aux relations. Quand tu vois les tables comme des parties d'un tout, bosser avec JOIN devient naturel.

À partir d'aujourd'hui, on commence à devenir des pros du SQL. Dans la prochaine leçon, tu verras comment utiliser INNER JOIN pour extraire des données de deux tables. Ce sera une grosse étape dans ton apprentissage de PostgreSQL.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION