Операция множественного соединения 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 & "'"