Comparaison des méthodes SQL JOIN : LEFT JOIN et plusieurs tables répertoriées dans la clause FROM
La plupart des dialectes SQL prennent en charge les deux méthodes, mais il est important de comprendre les avantages et les inconvénients de chaque méthode lors de l'utilisation de connexions à une base de données. Cet article explore les avantages et les inconvénients potentiels de l'utilisation de la syntaxe LEFT JOIN dans les jointures internes par rapport à la liste de plusieurs tables dans la clause FROM.
Élimination progressive des méthodes multi-tables
La syntaxe traditionnelle (simplement lister les tables dans la clause FROM et utiliser la clause WHERE pour établir les conditions de jointure) est progressivement supprimée au profit de la syntaxe LEFT JOIN. Il ne s’agit pas seulement d’un choix esthétique, cela permet également d’atténuer toute ambiguïté potentielle lors de la combinaison de jointures internes et externes dans une seule requête.
Ambiguïté et dépendance à l'ordre de jointure
Considérez le scénario suivant : lors de l'interrogation de trois tables interdépendantes (entreprise, service et employé), une ambiguïté se produit en utilisant l'ancienne syntaxe. Disons que l'objectif est de répertorier toutes les entreprises avec leurs départements et leurs employés, où les départements doivent avoir des employés pour être inclus, mais les entreprises sans département doivent quand même apparaître.
Utiliser l'ancienne syntaxe :
<code class="language-sql">SELECT * -- 为简单起见 FROM Company, Department, Employee WHERE Company.ID *= Department.CompanyID AND Department.ID = Employee.DepartmentID</code>
La syntaxe LEFT JOIN, en revanche, offre une plus grande flexibilité :
<code class="language-sql">SELECT * FROM Company LEFT JOIN ( Department INNER JOIN Employee ON Department.ID = Employee.DepartmentID ) ON Company.ID = Department.CompanyID</code>
Cette syntaxe spécifie explicitement que la jointure département-employé doit être effectuée en premier, puis que les résultats doivent être joints à gauche avec l'entreprise.
Filtrer la colonne de jointure
Un autre avantage de la syntaxe LEFT JOIN est sa capacité à filtrer sur la colonne de jointure sans affecter la ligne parent. Par exemple, si vous avez besoin de départements dont les noms contiennent la lettre « X », la syntaxe LEFT JOIN peut y parvenir :
<code class="language-sql">SELECT * FROM Company LEFT JOIN ( Department INNER JOIN Employee ON Department.ID = Employee.DepartmentID ) ON Company.ID = Department.CompanyID AND Department.Name LIKE '%X%'</code>
Conclusion
La syntaxe LEFT JOIN offre un plus grand degré de clarté et de contrôle sur l'opération de jointure que la liste de plusieurs tables dans la clause FROM pour une jointure interne. Il supprime toute ambiguïté, permet un filtrage plus flexible et est moins sensible aux problèmes de dépendance d'ordre. Par conséquent, la syntaxe LEFT JOIN devient la méthode privilégiée pour effectuer des jointures de bases de données efficaces et sans ambiguïté.
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!