ORA-00904 при использовании OUTER JOIN с 3 таблицами в предложении
SELECT
s.session_name semester
FROM
lsx.elsp_session s,
lsx.elsp_course_offering co,
its.ACCOUNT ac
LEFT OUTER JOIN lsx.elsp_class_attendance ca on ca.course_id = CO.ID and ca.student_number = ac.id
WHERE co.session_id = s.session_id
Я получаю ошибку ORA-00904, и, похоже, проблема в том, что CO.ID является недопустимым идентификатором. Однако, если я поставлю таблицу "lsx.elsp_course_offering co" последней в списке FROM, то "ac.id" станет идентификатором проблемы.
Разве нельзя использовать другую таблицу в предложении JOIN? Кажется, я вспоминаю создание успешных запросов, подобных этому, с использованием MySQL.
Я использую Oracle 9.2.0.8.0.
Следуя полученному совету, я смог заставить объединение работать так, как ожидалось, когда я переработал запрос к этому:
SELECT s.session_name semester FROM lsx.elsp_session s
INNER JOIN lsx.elsp_course_offering co
ON co.session_id = s.session_id
LEFT OUTER JOIN lsx.elsp_class_attendance ca
ON ca.course_id = co.id
LEFT OUTER JOIN its.account ac
ON ca.student_number = ac.id
Большое спасибо за вашу помощь.
1 ответ
Возможно, вы неправильно поняли комментарий выше. Обычно люди не смешивают несколько таблиц FROM с синтаксисом JOIN.
Я думаю, что вы должны написать это так. Так должно быть проще.
SELECT s.session_name semester
FROM lsx.elsp_session s
INNER JOIN lsx.elsp_course_offering co
ON co.session_id = s.session_id
INNER JOIN its.account ac
ON ca.student_number = ac.id
LEFT OUTER JOIN lsx.elsp_class_attendance ca
ON ca.course_id = co.id
а затем посмотреть, если вы получаете синтаксические ошибки.