85 votes

Déclaration de jointure multiple SQL

Lorsque je n'avais qu'une seule jointure interne dans mon instruction SQL, cela fonctionnait parfaitement. J'ai essayé de joindre une deuxième table, et maintenant je reçois une erreur qui dit qu'il y a une erreur de syntaxe (opérateur manquant). Qu'est-ce qui ne va pas ici?

 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 & "'"
 

199voto

Marc B Points 195501

Pour les jointures multi-tables, vous devez imbriquer les jointures supplémentaires entre parenthèses:

 SELECT ...
FROM ((origintable
JOIN jointable1 ON ...)
JOIN jointable2 ON ...)
JOIN jointable3 ON ...
 

En gros, pour chaque table supplémentaire que vous rejoignez après la première, vous avez besoin d'un crochet avant la table 'FROM' d'origine et d'un crochet de fermeture sur la clause JOIN correspondante 'on'.

24voto

mwolfe02 Points 11452

MS Access (en particulier Jet / ACE) nécessite des parenthèses avec plusieurs jointures. Essayer:

 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 & "'"
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X