SQLShack (Français)

Dans cet article, nous allons apprendre le SQL concept de jointures multiples et renforce nos apprentissages avec des exemples assez simples, qui sont expliqués avec des illustrations. Dans les bases de données relationnelles, les données sont stockées dans des tables. Sans aucun doute, et la plupart du temps, nous avons besoin d’un jeu de résultats formé en combinant les données de plusieurs tables. Les jointures nous permettent de combiner les données de deux ou plusieurs tables afin que nous puissions joindre les données des tables afin que nous puissions facilement récupérer les données de plusieurs tables. Vous pouvez vous demander combien de types différents de jointure existent dans SQL Server. La réponse est qu’il existe quatre principaux types de jointures dans SQL Server. Tout d’abord, nous les décrirons brièvement à l’aide des illustrations du diagramme de Venn:

  • La jointure interne renvoie les lignes qui correspondent dans les deux tables

  • La jointure à gauche renvoie toutes les lignes du tableau de gauche

  • La jointure à droite renvoie toutes les lignes de la table de droite

  • La jointure complète renvoie des lignes entières des deux tables

Si vous manquez de connaissances à propos du concept de jointure SQL dans SQL Server, vous pouvez consulter la vue d’ensemble des types de jointures SQL et l’article du didacticiel.

Après cette brève explication sur les types de jointures SQL, nous passerons en revue les jointures multiples.

Que sont les jointures multiples SQL?

Les jointures multiples peuvent être décrites comme suit; la jointure multiple est une requête qui contient des types de jointure identiques ou différents, qui sont utilisés plusieurs fois. Ainsi, nous gagnons la possibilité de combiner plusieurs tables de données afin de surmonter les problèmes de base de données relationnelle.

Exemple de scénario

La société Green-Tree a lancé une nouvelle campagne pour la nouvelle année et fait différentes offres à ses clients en ligne. Grâce à leur campagne, ils ont réussi à convertir certaines offres en ventes. Dans les exemples suivants, nous découvrirons les détails des données de campagne du nouvel an de l’entreprise Green-Tree.

L’entreprise stocke ces détails de données de campagne dans les tableaux suivants. Maintenant, nous allons créer ces tables via la requête suivante et les remplir avec des données factices:

Comment fonctionnent les jointures multiples SQL?

Problème commercial: quels clients étaient intéressés par cette nouvelle année campagne?

Pour répondre à cette question, nous devons trouver les lignes correspondantes pour tous les tableaux car certains clients n’ont pas reçu d’offre par e-mail et certaines offres n’ont pas pu être converties en vente. Le diagramme de Venn suivant nous aidera à déterminer les lignes correspondantes dont nous avons besoin. En bref, le résultat de cette requête doit être les lignes qui se croisent de toutes les tables de la requête. La zone grise spécifie ces lignes dans le diagramme de Venn:

L’approche des jointures multiples SQL nous aidera à rejoindre les clients en ligne , commandes et tableaux de vente. Comme le montre le diagramme de Venn, nous devons faire correspondre les lignes de toutes les tables. Pour cette raison, nous combinerons toutes les tables avec une clause de jointure interne. La requête suivante renverra un ensemble de résultats que nous souhaitons et répondra à la question:

1
2
3
4
5
6
7
8

SELECT customerName, customercity, customermail, salestotal
FROM onlinecustomers AS oc
INNER JOIN
orders AS o
ON oc.customerid = o.customerid
INNER JOIN
sales AS s
ON o.orderId = s.orderId

Dans un premier temps, nous analyserons la requête. Une clause de jointure interne située entre les clients en ligne et les tables de commandes a dérivé les lignes correspondantes entre ces deux tables. La deuxième clause de jointure interne qui combine la table des ventes a dérivé les lignes correspondantes de l’ensemble de résultats précédent. L’illustration suivante des tables colorées nous aidera à comprendre les données des tables jointes correspondant à la requête. Les lignes de couleur jaune spécifient les données correspondantes entre les clients en ligne et les commandes. En revanche, seules les lignes bleues existent dans les tables de ventes, donc le résultat de la requête sera des lignes bleues:

Le résultat de la requête ressemblera à ceci:

Utilisation de différents types de jointure dans les jointures multiples SQL

Problème commercial: quelles offres n’ont pas pu être converties en vente?

Nous pouvons utiliser les différents types de jointures dans une seule requête afin de pouvoir surmonter différents problèmes de base de données relationnelle.Dans cet exemple, nous avons besoin de toutes les lignes de la table des commandes, qui correspondent aux tables des clients en ligne. En revanche, ces lignes n’existent pas dans la table des ventes. Le diagramme de Venn suivant nous aidera à déterminer les lignes correspondantes dont nous avons besoin. La zone grise indique les lignes qui seront la sortie de la requête:

Dans la première étape, nous devons combiner les tables des clients en ligne et des commandes via la clause de jointure interne, car la jointure interne renvoie toutes les lignes correspondantes entre les tables des clients en ligne et des commandes. Dans un deuxième temps, nous combinerons la table des commandes à la table des ventes via la jointure gauche, puis filtrerons les valeurs nulles car nous devons éliminer les lignes stockées par la table des ventes:

1
2
3
4
5
6
7
8
9

SELECT customerName, customercity, customermail, ordertotal, salestotal
FROM onlinecustomers AS c
INNER JOIN
orders AS o
ON c.customerid = o.customerid
LEFT JOIN
sales AS s
ON o.orderId = s.orderId
WHERE s.salesId IS NULL

Le résultat de la requête sera ressemble à ceci:

Quiz

Q uestion: Veuillez générer la requête appropriée selon le diagramme de Venn ci-dessous.

Réponse: Comme nous l’avons appris, la jointure complète permet nous pour renvoyer toutes les lignes des tables combinées. La requête avec réponse sera comme suit:

1
2
3
4
5
6
7
8

SELECT customerName, customercity, customermail, ordertotal, salestotal
FROM onlinecustomers AS c
FULL JOIN
commandes AS o
ON c.customerid = o.customerid
FULL JOIN
sales AS s
ON o.orderId = s.orderId

Conclusion

Dans cet article, nous nous sommes concentrés sur l’approche des jointures multiples SQL et l’avons apprise avec des exemples détaillés. Les jointures multiples nous permettent de combiner plus de deux tables afin que nous puissions surmonter différents problèmes dans le système de base de données relationnelle. De plus, nous avons vu comment nous pourrions utiliser différents types de jointures dans une seule requête.

  • Auteur
  • Messages récents
Esat Erkec est un Professionnel de SQL Server qui a commencé sa carrière il y a plus de 8 ans en tant que développeur de logiciels. Il est un expert en solutions Microsoft certifié SQL Server.
La majeure partie de sa carrière s’est concentrée sur l’administration et le développement de bases de données SQL Server. Ses intérêts actuels sont l’administration de bases de données et la Business Intelligence. Vous pouvez le trouver sur LinkedIn.
Afficher tous les messages d’Esat Erkec

Derniers articles d’Esat Erkec (voir tout)
  • Premiers pas avec la programmation SQL – 3 février 2021
  • Comment lire une exécution plan avec tous les détails – 28 janvier 2021
  • Présentation et exemples d’instructions SQL SELECT TOP – 25 janvier 2021

Leave a Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *