Maison >base de données >tutoriel mysql >Pourquoi le mélange de jointures ANSI 1992 et de virgules dans les requêtes MySQL provoque-t-il des erreurs ?
La raison pour laquelle l'utilisation mixte de la syntaxe ANSI 1992 JOIN et des virgules dans les requêtes MySQL provoque des erreurs
Lorsque vous joignez plusieurs tables dans une requête MySQL, veillez à utiliser systématiquement la syntaxe ANSI 1992 JOIN ou la notation séparée par des virgules. Le mélange de ces deux méthodes peut entraîner des erreurs telles que l'erreur « Colonne inconnue 'm.id' dans 'on clause'".
Raison de l'erreur
Dans la requête suivante :
<code class="language-sql">SELECT m.*, t.* FROM memebers as m, telephone as t INNER JOIN memeberFunctions as mf ON m.id = mf.memeber INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber WHERE mf.function = 32</code>
Cette requête tente d'utiliser un mélange de notation virgule (utilisée pour joindre m et t) et de syntaxe ANSI 1992 JOIN (utilisée pour joindre mf et mt). Selon la documentation MySQL, cette méthode n'est plus prise en charge. L'opérateur virgule a désormais une priorité inférieure à celle de JOIN, provoquant des erreurs d'interprétation des opérandes.
Solution
Pour résoudre ce problème, utilisez systématiquement la notation par virgule ou la syntaxe ANSI 1992 JOIN. Pour plus de clarté et de fiabilité, il est recommandé d'utiliser la syntaxe JOIN :
<code class="language-sql">SELECT m.*, t.* FROM memebers AS m JOIN telephone AS t ON m.id = t.id JOIN memeberFunctions AS mf ON m.id = mf.memeber AND mf.function = 32 JOIN mitgliedTelephone AS mt ON m.id = mt.memeber</code>
Remarques
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!