Maison >base de données >tutoriel mysql >Pourquoi les JOIN explicites et implicites provoquent-elles des erreurs SQL ?
Erreurs SQL liées à la combinaison de jointures explicites et implicites
La combinaison de JOIN explicites et implicites dans une seule requête SQL peut entraîner des erreurs. L'exemple suivant illustre ce problème :
<code class="language-sql">SELECT e1.name, e2.name, e1Manager.name FROM Employee e1, Employee e2 INNER JOIN Employee e1Manager ON e1.managerEmployeeID = e1Manager.employeeID</code>
Cette requête produit des erreurs dans MSSQL 2000/2008 et MySQL :
Comprendre le problème de syntaxe
L'erreur provient d'un conflit de préséance. En SQL, le mot-clé JOIN
est prioritaire sur la liste des tables séparées par des virgules dans la clause FROM
. L'alias e1
n'est pas reconnu dans la clause ON
du JOIN
car l'analyseur n'a pas encore traité complètement la clause FROM
. Essentiellement, e1
n'est pas défini au point où il est référencé dans la condition JOIN
.
Hibernation et syntaxe de jointure
Il existe un problème connu dans Hibernate concernant la génération de SQL incorrect lors du mélange de JOIN explicites et implicites. Bien que forcer Hibernate à utiliser exclusivement des JOIN explicites soit une solution de contournement potentielle, les détails spécifiques pour y parvenir ne sont actuellement pas disponibles en raison des limitations de la documentation HQL accessible.
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!