Requêtes SQL Server pour les jointures multi-tables

Introduction aux jointures SQL pour les requêtes multi-tables

Dans SQL Server, l'interrogation de données provenant de plusieurs tables est essentielle. Les jointrues permettent de combiner des enregistrements basés sur des colonnes communes. Cet article explore les jointures internes et externes pour gérer efficacement les données réparties sur plusieurs tables.

Jointure interne entre deux tables

Une jointure interne retourne uniquement les lignes qui ont une correspondance dans les deux tables. L'ordre des tables dans la clause FROM n'affecte pas le résultat, mais peut influencer la lisibilité. Voici un exemple avec des tables renommées pour plus de clarté :


SELECT etudiant.identifiant_etudiant, 
       note.note_csharp AS note_csharp, 
       etudiant.nom_etudiant
FROM liste_notes note
INNER JOIN etudiants etudiant ON etudiant.identifiant_etudiant = note.identifiant_etudiant
WHERE note.note_csharp > 80;

Dans cette requête, les tables etudiants et liste_notes sont jointes sur le champ identifiant_etudiant. La condition WHERE filtre les notes supérieures à 80. Notez que l'alias note_csharp est utilisé pour renommer la colonne CSharp.

Jointure interne entre trois tables

Pour impliquer trois tables, une jointure interne supplémentaire est ajoutée. Cela permet de récupérer des données depuis plusieurs sources en une seule requête. Exemple :


SELECT etudiant.identifiant_etudiant, 
       note.note_csharp, 
       etudiant.nom_etudiant, 
       classe.nom_classe
FROM liste_notes note
INNER JOIN etudiants etudiant ON etudiant.identifiant_etudiant = note.identifiant_etudiant
INNER JOIN classes_etudiants classe ON etudiant.identifiant_classe = classe.identifiant_classe
WHERE note.note_csharp > 80;

Ici, la table classes_etudiants est ajoutée pour inclure le nom de la classe. L'ordre des jointures peut être réorganisé selon les besoins, mais les conditions ON doivent rester précises.

Jointure externe gauche

Une jointure externe gauche inclut tous les enregistrements de la table de gauche, même s'il n'y a pas de correspondance dans la table de droite. Les valeurs manquantes sont remplies par NULL. Cela est utile pour identifier les données sans correspondance. Exemple :


SELECT etudiant.identifiant_etudiant, 
       etudiant.nom_etudiant, 
       etudiant.genre, 
       note.note_csharp
FROM etudiants etudiant
LEFT OUTER JOIN liste_notes note ON etudiant.identifiant_etudiant = note.identifiant_etudiant
WHERE etudiant.genre = 'Homme';

Dans ce cas, la tible etudiants est la table de gauche (dans FROM), donc tous les étudiants de genre masculin sont inclus, même ceux sans note dans la table liste_notes. Le mot-clé OUTER peut être omis pour simplifier, mais il est recommandé pour la clarté.

Jointure externe droite

Une jointure externe droite fonctionne de manière similaire, mais inclut tous les enregistrements de la table de droite. Les détails sur cette jointure seront ajoutés ultérieurement pour couvrir des cas d'utilisation avancés.

Étiquettes: SQL Server jointures internes jointures externes requêtes multi-tables base de données relationnelle

Publié le 3 juillet à 07h20