En ce qui concerne les jointures, la plupart d'entre nous travaillent principalement avec la limite de deux tables et autres. Cependant, il est courant de devoir joindre trois tables afin d'obtenir une présentation et un aperçu des données plus significatifs. Prenons par exemple l'endroit où vous souhaitez récupérer une liste de films, leur inventaire de location correspondant et les détails réels de la location. Chacune de ces unités, telles que les films, l'inventaire et les détails de location, se trouvent dans des tableaux individuels.
Dans ce didacticiel, nous vous présenterons les différentes jointures et techniques que vous pouvez utiliser pour joindre trois tables en SQL.
Exigences:
À des fins de démonstration, nous utiliserons MySQL version 80 et la base de données exemple Sakila. Pour suivre, vous pouvez télécharger et configurer la base de données Sakila sur votre serveur MySQL. N'hésitez pas à utiliser tout autre ensemble de données que vous jugez applicable.
Types de jointures dans SQL
Avant d'aborder l'application des jointures, commençons par discuter des différents types de jointures disponibles dans les bases de données SQL.
JOINTURE INTERNE
Le premier type de jointure est une INNER JOIN. Ce type de jointure renvoie uniquement les lignes contenant une valeur correspondante dans les deux tables. Il s'agit d'un type de jointure très courant et le plus simpliste lors de la jointure de deux tables.
La syntaxe est la suivante :
SELECTIONNER les colonnesDE la table1
JOINTURE INTÉRIEURE table2 SUR table1.nom_colonne = table2.nom_colonne ;
JOINT GAUCHE
Dans le cas d'un LEFT JOIN, il renvoie toutes les lignes de la table de gauche et les lignes correspondantes de la table de droite. S'il n'y a aucune valeur correspondante dans la table de droite, la jointure ajoute les valeurs NULL à leur place.
La syntaxe est la suivante :
SELECTIONNER les colonnesDE la table1
JOINDRE À GAUCHE table2 SUR table1.nom_colonne = table2.nom_colonne ;
REJOINDRE À DROITE
Comme vous pouvez le deviner, le RIGHT JOIN est l’opposé du LEFT JOIN. Ce type de jointure renvoie toutes les lignes de la table de droite et uniquement les lignes correspondantes de la table de gauche. S'il n'y a aucune ligne correspondante dans la table de gauche, la jointure y ajoute les valeurs NULL.
Voici la syntaxe d'un RIGHT JOIN :
SELECTIONNER les colonnesDE la table1
REJOINDRE À DROITE table2 SUR table1.nom_colonne = table2.nom_colonne ;
JOINTURE EXTERNE COMPLÈTE
Le prochain type de jointure que vous rencontrerez dans les bases de données SQL est une FULL OUTER JOIN. Ce type de jointure renvoie toutes les lignes lorsqu'il existe une correspondance dans les tables de droite ou de gauche. S'il n'y a aucune valeur correspondante dans l'une ou l'autre des deux, il renvoie NULL pour les colonnes de la table sans correspondance.
Ce qui suit montre la syntaxe d'un FULL OUTER JOIN :
SELECTIONNER les colonnesDE la table1
JOINTURE EXTERNE COMPLÈTE table2 SUR table1.nom_colonne = table2.nom_colonne ;
Il est bon de garder à l’esprit que tous les moteurs de bases de données ne prennent pas en charge les FULL OUTER JOINS. Pour y parvenir, vous devrez peut-être travailler avec d'autres types de JOINS ou de sous-requêtes.
Exemples:
Explorons quelques exemples sur la façon dont nous pouvons utiliser ces types de jointures pour joindre trois tables en SQL.
Exemple 1 : Utilisation de INNER JOIN
Nous commençons par un INNER JOIN. Supposons que nous souhaitions récupérer une liste de films, l'inventaire de location et les détails de location correspondants.
Nous pouvons utiliser plusieurs INNER JOINS sur les tables associées comme le montre l'exemple suivant :
SÉLECTIONNERtitre de film,
inventaire.inventory_id,
location.rental_date
DEPUIS
film
Inventaire INNER JOIN SUR
film.film_id = inventaire.film_id
Location INNER JOIN SUR
inventaire.inventory_id = location.inventory_id;
Dans l'exemple de requête donné, nous commençons par joindre les tables de film et d'inventaire en fonction de la colonne « film_id ». Nous prenons ensuite l'ensemble résultant et le joignons à la table de location basée sur la colonne « inventor_id ».
Cela garantit que nous joignons trois tables avec un INNER JOIN de base. L’ensemble résultant est le suivant :
Exemple 2 : Utilisation de INNER JOIN et LEFT JOIN
Disons que nous voulons maintenant la liste des films, la liste des inventaires de location (s'il y en a) et les détails de location associés.
Nous voulons également nous assurer que même si un film n'a pas d'inventaire de location, nous l'incluons toujours dans le résultat. C’est là que INNER JOIN et LEFT JOIN entrent en jeu.
Prenons l'exemple suivant :
SÉLECTIONNERtitre de film,
inventaire.inventory_id,
location.rental_date
DEPUIS
film
Inventaire INNER JOIN SUR
film.film_id = inventaire.film_id
REJOINDRE À GAUCHE location SUR
inventaire.inventory_id = location.inventory_id;
Dans cet exemple, nous utilisons un INNER JOIN pour joindre la table des films et de l'inventaire afin de garantir que nous obtenons les titres avec l'inventaire disponible. Nous utilisons ensuite LEFT JOIN pour rejoindre la table de location afin de récupérer les détails de la location s'ils sont disponibles et NULL pour tout titre qui n'a pas d'historique de location.
L’ensemble résultant est le suivant :
Conclusion
Dans ce didacticiel, nous avons découvert les différents types de JOINS dans SQL, leur fonctionnement et comment nous pouvons les utiliser pour combiner trois tables.