Les jointures
Comprendre les jointures de tables
Une jointure consiste à croiser plusieurs tables. Les jointures sont par défaut internes.
Jointure interne
Elle consiste à ne garder que les lignes où il y a correspondantes ie où les clés étrangère et primaire matchent
Voici, une manière d'écrire une jointure interne.
SELECT
t.Name AS Song ,
g.Name AS Genre ,
a.Title AS Album ,
a2.Name AS Artist ,
t.Composer AS Composer ,
COUNT(*) as occ ,
FROM
playlists p ,
playlist_track pt ,
tracks t ,
genres g ,
albums a ,
artists a2
WHERE
p.PlaylistId = pt.PlaylistId
AND
pt.TrackId = t.TrackId
AND
t.GenreId = g.GenreId
AND
t.AlbumId = a.AlbumId
AND
a.ArtistId = a2.ArtistId
GROUP BY
t.Name
ORDER BY
occ DESC ;
Jointure externe
Jointure externe à gauche
On garde toutes les lignes de la table à gauche
Jointure externe à droite
On garde toutes les lignes de la table à droite
Jointure externe totale
On garde toutes les lignes des deux tables
Jointure croisée
Une jointure croisée retourne le produit cartésien des tables, i.e toutes les combinaisons possibles. Ce type de jointure est très peu utilisé mais peut s'avérer utile pour des besoins de génération de données.
Jointure réflexive
Il s'agit d'un type de jointure qui consiste à croiser une table avec elle-même.
Voici un exemple, supposons que les employés et les managers sont stockés dans une même table Employes
, si l'on souhaite avoir les détails sur le manager d'un employé donné, alors il faut croiser la table Employes
avec elle-même.
SELECT a.Nom Nom_Employe, b.Nom Nom_Manager
FROM Employes a
LEFT JOIN Employes b ON a.id_manager = b.id_employe;
Je me suis basé sur cet article pour rédiger cette section https://www.sqlshack.com/learn-sql-inner-join-vs-left-join/