Maison > base de données > tutoriel mysql > Jointures SQL : pourquoi utiliser « LEFT JOIN » avec des « INNER JOIN » imbriquées au lieu de plusieurs tables dans la clause « FROM » ?

Jointures SQL : pourquoi utiliser « LEFT JOIN » avec des « INNER JOIN » imbriquées au lieu de plusieurs tables dans la clause « FROM » ?

Barbara Streisand
Libérer: 2025-01-20 11:06:10
original
443 Les gens l'ont consulté

SQL Joins: Why Use `LEFT JOIN` with Nested `INNER JOIN`s Instead of Multiple Tables in the `FROM` Clause?

Jointure gauche SQL et jointure multi-table dans la clause FROM : pourquoi la deuxième syntaxe

est recommandée

Bien que le dialecte SQL traditionnel autorise les jointures à la fois via les clauses WHERE et LEFT JOIN, il est crucial de comprendre les avantages de l'utilisation de la syntaxe LEFT JOIN, en particulier lors de l'exécution de jointures internes.

Éviter toute ambiguïté

Dans les bases de données modernes, la méthode traditionnelle de listage des tables à l'aide des conditions de la clause WHERE est obsolète. Cette syntaxe peut prêter à confusion lors de la combinaison de jointures internes et externes dans la même requête.

Exemple : connexion héritée ambiguë

Considérons l'exemple suivant :

SELECT *
FROM Company, Department, Employee
WHERE Company.ID = Department.CompanyID
  AND Department.ID = Employee.DepartmentID
Copier après la connexion

Cette requête est conçue pour répertorier les entreprises, leurs services et leurs employés. Cependant, l'optimiseur de requêtes peut choisir de donner la priorité à la jointure interne entre les tables Department et Employee, ce qui entraîne l'exclusion des entreprises sans département.

Solution : syntaxe LEFT JOIN

La syntaxe

LEFT JOIN résout cette ambiguïté en spécifiant explicitement l'ordre de connexion. En plaçant la jointure interne entre parenthèses et en effectuant une jointure gauche à l'aide de la table company, la requête précédente devient :

SELECT *
FROM Company
LEFT JOIN (
    Department INNER JOIN Employee ON Department.ID = Employee.DepartmentID
) ON Company.ID = Department.CompanyID
Copier après la connexion

Cette syntaxe garantit que toutes les entreprises sont incluses, même celles sans départements.

Contrôle et flexibilité supplémentaires

La syntaxe

LEFT JOIN fournit également un contrôle supplémentaire sur les conditions de jointure. Par exemple, la requête suivante filtre les départements dont le nom contient la lettre « X » :

SELECT *
FROM Company
LEFT JOIN (
    Department INNER JOIN Employee ON Department.ID = Employee.DepartmentID
) ON Company.ID = Department.CompanyID AND Department.Name LIKE '%X%'
Copier après la connexion

Conclusion

La syntaxe

LEFT JOIN, ainsi que les jointures internes, offrent plusieurs avantages par rapport à la méthode traditionnelle de jointure de tables sur des lignes FROM. Il supprime toute ambiguïté, offre un meilleur contrôle et simplifie le processus d'optimisation des requêtes. Par conséquent, l'utilisation de LEFT JOIN et INNER JOIN est fortement recommandée dans les applications SQL modernes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal