SQL マルチテーブル接続構文エラー
SQL ステートメントに複数の INNER JOIN
操作が含まれる場合、構文エラーを避けるために、最初の JOIN
句を除くすべての JOIN
句を括弧で囲む必要があります。
問題の説明:
以前は INNER JOIN
が 1 つしかなかった SQL ステートメントは、2 番目のテーブル結合を追加した後に構文エラーをスローします。文は次のとおりです。
<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>
解決策:
このエラーを解決するには、追加の JOIN
句を括弧で囲む必要があります。修正後の文は以下の通りです:
<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>
説明:
複数テーブル結合の場合、追加の各 JOIN
操作を括弧で囲む必要があります。これにより、演算子の優先順位が正しく設定され、構文エラーが防止されます。最も内側の JOIN
が最初に実行され、次に次の外側の JOIN
が実行され、元の FROM
テーブルに到達するまで続きます。
この構文に従うことで、SQL ステートメント内の複数テーブルの結合を正しく実行できます。
以上が複数の SQL INNER JOIN に括弧が必要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。