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

а затем посмотреть, если вы получаете синтаксические ошибки.

Другие вопросы по тегам