Maison >base de données >tutoriel mysql >Pourquoi plusieurs SQL INNER JOIN nécessitent-elles des parenthèses ?

Pourquoi plusieurs SQL INNER JOIN nécessitent-elles des parenthèses ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-19 20:42:10909parcourir

Why Do Multiple SQL INNER JOINs Require Parentheses?

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!

Déclaration:
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