Maison >base de données >tutoriel mysql >Pourquoi plusieurs SQL INNER JOIN nécessitent-elles des parenthèses ?
Erreur de syntaxe de connexion multi-table SQL
Lorsqu'une instruction SQL contient plusieurs opérations INNER JOIN
, toutes les clauses JOIN
à l'exception de la première clause JOIN
doivent être placées entre parenthèses pour éviter les erreurs de syntaxe.
Description du problème :
Une instruction SQL qui n'en avait auparavant qu'une INNER JOIN
renvoie une erreur de syntaxe après l'ajout d'une deuxième jointure de table. La phrase est la suivante :
<code class="language-sql">adsFormView.SelectCommand = "SELECT * FROM [tableCourse] INNER JOIN [tableGrade] ON [tableCourse].[grading] = [tableGrade].[id] INNER JOIN [tableCourseType] ON [tableCourse].[course_type] = [tableCourseType].[id] WHERE [prefix]='" & myPrefix & "' AND [course_number]='" & myCourseNum & "'"</code>
Solution :
Pour résoudre cette erreur, des clauses JOIN
supplémentaires doivent être placées entre parenthèses. La phrase corrigée est la suivante :
<code class="language-sql">adsFormView.SelectCommand = "SELECT * FROM [tableCourse] INNER JOIN [tableGrade] ON [tableCourse].[grading] = [tableGrade].[id] INNER JOIN ( [tableCourseType] ON [tableCourse].[course_type] = [tableCourseType].[id] ) WHERE [prefix]='" & myPrefix & "' AND [course_number]='" & myCourseNum & "'"</code>
Explication :
Pour les jointures multi-tables, chaque opération JOIN
supplémentaire doit être mise entre parenthèses. Cela garantit une priorité correcte des opérateurs et évite les erreurs de syntaxe. Le JOIN
le plus interne est exécuté en premier, puis le JOIN
externe suivant, et ainsi de suite jusqu'à ce que la table FROM
d'origine soit atteinte.
En adhérant à cette syntaxe, les jointures multi-tables dans les instructions SQL peuvent être exécutées correctement.
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!