Instrukcja SQL multiple join

Kiedy miałem tylko jedno wewnętrzne połączenie w moim poleceniu SQL, działało idealnie. Próbowałem dołączyć do drugiej tabeli, a teraz dostaję błąd, który mówi, że jest błąd składni (brak operatora). Co jest nie tak?

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 & "'"
Author: Marc B, 2011-10-22

2 answers

Dla połączeń wielostolikowych, musisz zagnieżdżać dodatkowe połączenia w nawiasach:

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

Zasadniczo, dla każdego dodatkowego stołu, który dołączysz poza pierwszym, potrzebujesz nawiasu przed oryginalną tabelą "FROM" I nawiasu zamykającego na pasującej klauzuli "on".

 133
Author: Marc B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-21 20:37:17

MS Access (w szczególności Jet/ACE) wymaga nawiasów z wieloma połączeniami. Try:

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
Author: mwolfe02,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-12 01:18:52