Joindre trois tables en SQL

Joindre Trois Tables En Sql



Dans les bases de données relationnelles, la tâche consistant à récupérer les données de plusieurs tables est extrêmement courante. En fonction du résultat cible, cela implique de joindre plusieurs tables en une seule unité et de récupérer les données résultantes.

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 colonnes

DE 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 colonnes

DE 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 colonnes

DE 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 colonnes

DE 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ÉLECTIONNER

titre 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ÉLECTIONNER

titre 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.