Операция множественного соединения SQL

Когда у меня было только одно внутреннее соединение в моем 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 & "'"

Ответ 1

Для объединения нескольких таблиц вам нужно вложить дополнительные комбинации в скобки:

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

в основном, для каждой дополнительной таблицы, к которой вы присоединяетесь, сначала требуется скобка перед исходной таблицей "FROM" и закрывающая скобка для соответствующего предложения JOIN 'on'.

Ответ 2

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