Jointures dans SQL Server : types et exemples

โšก Rรฉsumรฉ intelligent

Dans SQL Server, les jointures combinent les lignes de deux tables ou plus en fonction d'une colonne liรฉe, en utilisant les jointures INNER, LEFT OUTER, RIGHT OUTER et FULL OUTER pour contrรดler quelles lignes correspondantes et non correspondantes apparaissent dans le rรฉsultat.

  • ๐Ÿ”— Objectif : Une jointure permet de rรฉcupรฉrer des donnรฉes liรฉes provenant de deux tables ou plus en faisant correspondre une colonne commune, gรฉnรฉralement une clรฉ.
  • (I.e. JOINTURE INTERNE: INNER JOIN ne renvoie que les lignes oรน la condition de jointure est vraie dans les deux tables.
  • โฌ…๏ธ JOINTURE EXTERNE GAUCHE : LEFT OUTER JOIN renvoie chaque ligne de la table de gauche, en remplissant les colonnes non appariรฉes de la table de droite avec NULL.
  • โžก๏ธ JOINTURE EXTERNE DROITE : RIGHT OUTER JOIN renvoie chaque ligne de la table de droite, en remplissant les colonnes non appariรฉes de la table de gauche avec NULL.
  • (I.e. JOINT EXTร‰RIEUR COMPLET : La jointure externe complรจte (FULL OUTER JOIN) renvoie toutes les lignes des deux tables, en utilisant NULL lorsque la condition n'est pas remplie.
  • (I.e. ร€ condition: La clause ON nomme les colonnes qui relient les tables, le plus souvent une paire clรฉ primaire/clรฉ รฉtrangรจre.

Jointures dans SQL Server : exemples de jointures internes, externes gauches, droites et externes complรจtes

Que sont les jointures dans SQL Server ?

Les donnรฉes peuvent รชtre rรฉcupรฉrรฉes ร  partir de plusieurs tables en utilisant l'instruction JOIN dans SQL ServerUne jointure (JOIN) combine les lignes de deux tables ou plus en fonction d'une colonne commune, le plus souvent une colonne de correspondance. clรฉ primaire assorti ร  un clรฉ รฉtrangรจreIl existe principalement quatre types de jointures dans SQL Server :

  • Jointure interne / jointure simple
  • Jonction extรฉrieure gauche / jonction gauche
  • Jonction extรฉrieure droite / jonction droite
  • JOINTURE EXTร‰RIEURE COMPLรˆTE

Le tableau ci-dessous rรฉcapitule les lignes renvoyรฉes par chaque type de jointure :

Type de jointure Lignes renvoyรฉes
JOINTURE INTERNE Seules les lignes oรน la condition de jointure correspond dans les deux tables.
JOINT EXTERIEUR GAUCHE Toutes les lignes du tableau de gauche, plus les lignes correspondantes du tableau de droite (NULL lorsqu'aucune ne correspond).
JOINT EXTร‰RIEUR DROIT Toutes les lignes du tableau de droite, plus les lignes correspondantes du tableau de gauche (NULL lorsqu'aucune ne correspond).
JOINTURE EXTร‰RIEURE COMPLรˆTE Toutes les lignes des deux tables, avec des valeurs NULL lorsque la condition n'est pas remplie.

Les exemples ci-dessous utilisent deux les tablesLes tables ยซ ร‰tudiants ยป et ยซ Frais de scolaritรฉ ยป sont jointes sur la base de leur colonne d'admission commune. Chaque section explique un type de jointure avec sa syntaxe, un exemple de requรชte et le rรฉsultat.

JOINTURE INTERNE

Ce type dโ€™ SQL Server La fonction JOIN renvoie les lignes de toutes les tables pour lesquelles la condition de jointure est vraie. Elle accepte la syntaxe suivante :

SELECT columns
FROM table_1 
INNER JOIN table_2
ON table_1.column = table_2.column;

Nous utiliserons les deux tableaux suivants pour illustrer cela. Le tableau ยซ ร‰tudiants ยป ci-dessous rรฉpertorie chaque รฉtudiant et son numรฉro dโ€™admission :

Tableau des รฉtudiants listant les colonnes admission, prรฉnom et nom

Le tableau des frais ci-dessous indique le montant payรฉ pour chaque numรฉro d'admission :

Tableau des frais indiquant le nombre d'admissions et la colonne montant_payรฉ

La commande suivante illustre une jointure interne (INNER JOIN) dans SQL Server ร  l'aide d'un exemple :

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
INNER JOIN Fee
ON Students.admission = Fee.admission

La commande renvoie le rรฉsultat suivant, affichant uniquement les numรฉros d'admission prรฉsents dans les deux tableaux :

Rรฉsultat de la jointure interne ne montrant que les รฉtudiants dont l'admission figure dans les deux tableaux

Nous pouvons identifier les รฉtudiants qui ont rรฉglรฉ leurs frais d'inscription. Nous avons utilisรฉ la colonne prรฉsentant des valeurs communes aux deux tableaux, ร  savoir la colonne ยซ admission ยป.

JOINT EXTERIEUR GAUCHE

Ce type de jointure renvoie toutes les lignes de la table de gauche ainsi que les enregistrements de la table de droite ayant des valeurs correspondantes. Par exemple :

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
LEFT OUTER JOIN Fee
ON Students.admission = Fee.admission

Le code renvoie le rรฉsultat suivant, keeping chaque รฉtudiant, mรชme lorsqu'aucun relevรฉ de frais ne correspond :

Jointure externe gauche rรฉsultat keeping Chaque รฉtudiant se range avec NULL pour des frais non appariรฉs

Les enregistrements sans valeurs correspondantes sont remplacรฉs par des NULL dans les colonnes respectives.

JOINT EXTร‰RIEUR DROIT

Ce type de jointure renvoie toutes les lignes du tableau de droite et uniquement celles dont les valeurs correspondent dans le tableau de gauche. Par exemple:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
RIGHT OUTER JOIN Fee
ON Students.admission = Fee.admission

L'instruction OUTER JOIN dans SQL Server renvoie le rรฉsultat suivant :

Jointure extรฉrieure droite rรฉsultat keeping chaque ligne de frais et les lignes d'รฉtudiants correspondantes

La raison du rรฉsultat ci-dessus est que toutes les lignes du tableau Frais sont disponibles dans le tableau ร‰tudiants lorsqu'elles correspondent dans la colonne d'admission.

JOINTURE EXTร‰RIEURE COMPLรˆTE

Ce type de jointure renvoie toutes les lignes des deux tables, avec des valeurs NULL lorsque la condition de jointure n'est pas vรฉrifiรฉe. Par exemple :

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
FULL OUTER JOIN Fee
ON Students.admission = Fee.admission

Le code renvoie le rรฉsultat suivant pour les requรชtes FULL OUTER JOIN dans SQL, en combinant chaque ligne des deux tableaux :

Rรฉsultat de la jointure externe complรจte combinant toutes les lignes Students et Fee avec des valeurs NULL pour les espaces vides.

FAQ

Une jointure croisรฉe (CROSS JOIN) renvoie le produit cartรฉsien de deux tables, associant chaque ligne de la premiรจre table ร  chaque ligne de la seconde. Elle ne comporte pas de condition ON ; ainsi, une table de 10 lignes et une autre de 5 lignes produisent 50 lignes.

On utilise une jointure interne (SELF JOIN) : la table est listรฉe deux fois avec des alias diffรฉrents, puis jointe sur une colonne commune pour comparer les lignes d'une mรชme table. Cette mรฉthode est courante pour les donnรฉes hiรฉrarchiques, comme l'association de chaque employรฉ ร  son responsable.

Une jointure (JOIN) combine les colonnes de tables liรฉes cรดte ร  cรดte, en faisant correspondre les lignes selon une condition. L'union (UNION) empile verticalement les rรฉsultats de deux requรชtes de sรฉlection (SELECT), en ajoutant des lignes. Une jointure รฉlargit le rรฉsultat ; une union l'allonge.

Oui. La clause ON permet de tester plusieurs colonnes liรฉes par AND, par exemple ON a.col1 = b.col1 AND a.col2 = b.col2. Les conditions composites sont courantes lorsqu'une seule colonne ne permet pas d'identifier une ligne de maniรจre unique.

La clause ON dรฉfinit la correspondance entre les tables et est appliquรฉe lors de l'exรฉcution de la jointure. La clause WHERE filtre ensuite le rรฉsultat combinรฉ. Avec les jointures externes (OUTER JOIN), le dรฉplacement d'une condition entre les tables peut modifier les lignes renvoyรฉes.

Oui. ร‰crire JOIN sans prรฉfixe correspond par dรฉfaut ร  INNER JOIN, qui ne renvoie donc que les lignes correspondantes. Ajouter LEFT, RIGHT ou FULL avant OUTER JOIN modifie les lignes non correspondantes qui sont conservรฉes dans le rรฉsultat.

Oui. Copilote GitHub Il est possible de rรฉdiger des requรชtes INNER JOIN, LEFT JOIN, RIGHT JOIN et FULL OUTER JOIN ร  partir d'une invite en langage naturel. Il est essentiel de toujours vรฉrifier la condition ON et le type de jointure afin que le rรฉsultat corresponde ร  vos attentes.

Les assistants d'IA et d'apprentissage automatique suggรจrent le type de jointure appropriรฉ, gรฉnรจrent des conditions ON multi-tables et signalent les clรฉs manquantes ou les produits cartรฉsiens accidentels. Ils peuvent รฉgalement recommander des index pour les colonnes de jointure. Le dรฉveloppeur vรฉrifie chaque suggestion avant son exรฉcution.

Rรฉsumez cet article avec :