Growyn logoGrowyn.dev
HomeBlogContact


Growyn.dev|

A learning platform to structure knowledge into objectives, categories and topics.

Navigation

  • Home
  • Blog
  • Contact

Contact

  • Email
  • GitHub
  • LinkedIn

© 2026 Growyn.dev — All rights reserved

Built with Next.js & Tailwind(v0.1.4-p)

Back to the objective
SQL/Joints

The different joints

Published on July 16, 2026
0 comment

Quand utiliser les jointures SQL

Une jointure sert à fusionner deux tables sur base d'une colonne commune.

On les utilises lorsqu'il faut obtenir un résultat combinant les données de plusieurs tables.

Ces deux tables seront utilisées lors des exemples et explications:

Cinema

id_filmnom_filmdate_sortienote_imdb
1Jaws19758.0
2Star Wars19778.6
3Don't Look Up20217.2
4Titanic19977.8
5Le dernier samouraï20037.7

Acteur

nom_acteurdate_naissanceid_film
Roy Scheider10/11/19321
Mark Hamill25/09/19512
Meryl Streep22/09/19493
Tom Cruise03/07/19625
Tom Hanks15/09/1977NULL
Timothée Chalamet27/12/19953

Les différents types de jointures

  • (INNER) JOIN: Ne garde que les lignes qui ont une correspondance dans les deux tables.
  • LEFT JOIN: Garde toutes les lignes de la table de gauche, même celles qui n'ont pas de correspondance dans la table de droite. Dans ce cas, les colonnes de la table de droite sont remplies avec NULL.
  • RIGHT JOIN: Garde toutes les lignes de la table de droite, même celles qui n'ont pas de correspondance dans la table de gauche. Dans ce cas, les colonnes de la table de gauche sont remplies avec NULL.
  • FULL JOIN: Garde toutes les lignes des deux tables. Les colonnes n'ayant pas de correspondance sont remplies avec NULL.
  • CROSS JOIN: Associe chaque ligne de la table de gauche avec chaque ligne de la table de droite. Les colonnes n'ayant pas de correspondance sont remplies avec NULL.
  • SELF JOIN: Permet une jointure d'une table avec elle-même.

INNER JOIN

INNER JOIN ne garde que les lignes qui ont une correspondance dans les deux tables.

INNER-JOIN

Syntaxe

SELECT * FROM tableA ta JOIN tableB tb ON ta.colonne = tb.colonne

Il n'est pas obligatoire de préciser INNER.

Exemple

SELECT * FROM Cinema c JOIN Acteur a ON c.id_film = a.id_film
id_filmnom_filmdate_sortienote_imdbnom_acteurdate_naissance
1Jaws19758.0Roy Scheider10/11/1932
2Star Wars19778.6Mark Hamill25/09/1951
3Don't Look Up20217.2Meryl Streep22/09/1949
5Le dernier samouraï20037.7Tom Cruise03/07/1962
3Don't Look Up20217.2Timothée Chalamet27/12/1995

Le film ayant l'id_film 4 de la table Cinema (table de gauche) n'apparait pas, car il n'existe pas de correspondance entre cet id_film et la table Acteur. Idem pour l'acteur Tom Hanks, il n'apparait pas car il n'est lié à aucun film. Enfin, le film Don't Look Up apparait deux fois, car il y a une correspondance avec deux acteurs.


LEFT JOIN

LEFT JOIN garde toutes les lignes de la table de gauche, même celles qui n'ont pas de correspondance dans la table de droite. Dans ce cas, les colonnes de la table de droite sont remplies avec NULL.

Contrairement à un INNER JOIN, LEFT JOIN préserve les données de la table de gauche, même en l'absence de correspondance.

LEFT-JOIN

Syntaxe

SELECT * FROM tableA ta LEFT JOIN tableB tb ON ta.colonne = tb.colonne

Exemple

SELECT * FROM Cinema c LEFT JOIN Acteur a ON c.id_film = a.id_film
id_filmnom_filmdate_sortienote_imdbnom_acteurdate_naissance
1Jaws19758.0Roy Scheider10/11/1932
2Star Wars19778.6Mark Hamill25/09/1951
3Don't Look Up20217.2Meryl Streep22/09/1949
3Don't Look Up20217.2Timothée Chalamet27/12/1995
4Titanic19977.8NULLNULL
5Le dernier samouraï20037.7Tom Cruise03/07/1962

Ici, tous les enregistrements de la table Cinema sont présents. Comme aucun acteur n'est associé à l'id_film 4 (Titanic), on trouve des valeurs NULL. Tom Hanks n'apparait pas dans les résultats, car la table de référence est la table de gauche Cinema.

Point d'attention

Il est possible de ne garder que les données de la table de gauche qui n'ont aucune correspondance avec la table de droite en utilisant une clause WHERE comme ceci:

SELECT c.id_film, c.nom_film, c.date_sortie, c.note_imdb, a.nom_acteur, a.date_naissance FROM Cinema c LEFT JOIN Acteur a ON c.id_film
id_filmnom_filmdate_sortienote_imdbnom_acteurdate_naissance
4Titanic19977.8NULLNULL

Ici, on ne garde donc que les données n'ayant pas de correspondance avec la table Acteur.


RIGHT JOIN

RIGHT JOIN garde toutes les lignes de la table de droite, même celles qui n'ont pas de correspondance dans la table de gauche. Dans ce cas, les colonnes de la table de gauche sont remplies avec NULL.

RIGHT-JOIN

Syntaxe

SELECT * FROM tableA ta RIGHT JOIN tableB tb ON ta.colonne = tb.colonne

Exemple

SELECT * FROM Cinema c RIGHT JOIN Acteur a ON c.id_film = a.id_film
id_filmnom_filmdate_sortienote_imdbnom_acteurdate_naissance
1Jaws19758.0Roy Scheider10/11/1932
2Star Wars19778.6Mark Hamill25/09/1951
3Don't Look Up20217.2Meryl Streep22/09/1949
5Le dernier samouraï20037.7Tom Cruise03/07/1962
NULLNULLNULLNULLTom Hanks15/09/1977
3Don't Look Up20217.2Timothée Chalamet27/12/1995

Ici, tous les enregistrements de la table Acteur sont présents. Comme aucun film n'est associé à l'acteur Tom Hanks, on y trouve des valeurs NULL. Le film Titanic n'apparait pas dans les résultats, car la table de référence est la table de droite Acteur.

Point d'attention

Il est possible de ne garder que les données de la table de droite qui n'ont aucune correspondance avec la table de gauche en utilisant une clause WHERE comme ceci:

SELECT c.id_film, c.nom_film, c.date_sortie, c.note_imdb, a.nom_acteur, a.date_naissance FROM Cinema c RIGHT JOIN Acteur a ON c.id_film
id_filmnom_filmdate_sortienote_imdbnom_acteurdate_naissance
NULLNULLNULLNULLTom Hanks15/09/1977

Ici, on ne garde donc que les données n'ayant pas de correspondance avec la table Cinema.


FULL JOIN

FULL JOIN garde toutes les lignes des deux tables. Les colonnes n'ayant pas de correspondance sont remplies avec NULL. Cette jointure n'exclut aucune donnée.

FULL-JOIN

Syntaxe

SELECT * FROM tableA ta FULL JOIN tableB tb ON ta.colonne = tb.colonne

Exemple

SELECT * FROM Cinema c FULL JOIN Acteur a ON c.id_film = a.id_film
id_filmnom_filmdate_sortienote_imdbnom_acteurdate_naissance
1Jaws19758.0Roy Scheider10/11/1932
2Star Wars19778.6Mark Hamill25/09/1951
3Don't Look Up20217.2Meryl Streep22/09/1949
5Le dernier samouraï20037.7Tom Cruise03/07/1962
NULLNULLNULLNULLTom Hanks15/09/1977
3Don't Look Up20217.2Timothée Chalamet27/12/1995
4Titanic19977.8NULLNULL

Ici, tous les enregistrements sont présents, qu'il y ait une correspondance ou non. Les endroits où il n'y a pas de correspondance ont la valeur NULL.


CROSS JOIN

CROSSE JOIN associe chaque ligne de la table de gauche avec chaque ligne de la table de droite. Les colonnes n'ayant pas de correspondance sont remplies avec NULL. Si la table de gauche possède 10 lignes et que la table de droite en possède 8, alors le résultat affichera 80 lignes.

Syntaxe

SELECT * FROM tableA ta CROSS JOIN tableB tb

Exemple

SELECT * FROM Cinema c CROSS JOIN Acteur a
id_filmnom_filmdate_sortienote_imdbnom_acteurdate_naissance
1Jaws19758.0Roy Scheider10/11/1932
2Star Wars19778.6Roy Scheider10/11/1932
3Don't Look Up20217.2Roy Scheider10/11/1932
4Titanic19977.8Roy Scheider10/11/1932
5Le dernier samouraï20037.7Roy Scheider10/11/1932
1Jaws19758.0Mark Hamill25/09/1951
2Star Wars19778.6Mark Hamill25/09/1951
3Don't Look Up20217.2Mark Hamill25/09/1951
4Titanic19977.8Mark Hamill25/09/1951
5Le dernier samouraï20037.7Mark Hamill25/09/1951

Le résultat dans cet exemple n'est pas complet. En effet, il y a normalement 30 lignes (5 enregistrements dans la table Cinema multiplié par les 6 enregistrements de la table Acteur).


SELF JOIN

SELF JOIN permet une jointure d'une table avec elle-même. Elle est utilisée lorsqu'une table possède une clé primaire et une clé étrangère à la fois. Cela permet de mettre en évidence les relations entre les enregistrements d'une même table.

Syntaxe

SELECT * FROM tableA as a1 JOIN tableA as a2 ON a1.colonne = a2.colonne_associee

ou bien

SELECT * FROM tableA a1, tableA a2 WHERE condition

Exemple

Prenons la table suivante: Employee

id_employeenomid_manager
1AntoineNULL
2Yves1
3Marc2

Où Antoine est le manager d'Yves, et Yves et le manager de Marc.

SELECT e.id_employee, e.nom AS employee_nom, m.nom AS manager_nom FROM Employee e LEFT JOIN Employee m ON e.manager_id = m.employee_id
id_employeeemployee_nommanager_nom
1AntoineNULL
2YvesAntoine
3MarcYves

Le résultat permet de mettre en évidence la manager de chaque employé.

Ici, la jointure SELF JOIN a été réalisée par le biais d'une jointure LEFT JOIN, mais il est tout à fait possible de réaliser la même opération avec d'autres types de jointures.


Sources

  • W3Schools - https://www.w3schools.com/sql/sql_join.asp
  • GeeksForGeeks - https://www.geeksforgeeks.org/sql/sql-join-set-1-inner-left-right-and-full-joins/
  • SQL.sh - https://sql.sh/cours/jointures
  • DataBird - https://www.data-bird.co/blog/jointures-sql#les-differents-types-de-jointures-sql

Discussion

Please sign in to leave a comment.

All comments (0)

No comments yet. Be the first to comment!

=
a
.
id_film
WHERE
a
.
id_film
IS
NULL
=
a
.
id_film
WHERE
c
.
id_film
IS
NULL