web-dev-qa-db-ja.com

SQL複数結合ステートメント

SQLステートメントに内部結合が1つしかない場合、完全に機能しました。 2番目のテーブルに参加しようとしましたが、構文エラー(演算子がありません)があるというエラーが表示されています。ここで何が間違っていますか?

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

マルチテーブル結合の場合、角括弧で余分な結合をネストする必要があります。

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

基本的に、最初のテーブルを超えて参加するすべての追加テーブルには、元の「FROM」テーブルの前にブラケットが必要であり、対応するJOIN「on」句に閉じブラケットが必要です。

148
Marc B

MS Access(具体的には、Jet/ACE)では、複数の結合を持つ括弧が必要です。試してください:

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