0
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

非常感谢您的帮助。

4

1 回答 1

3

你可能误解了上面的评论。通常人们不会将多个 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

然后看看你是否得到语法错误。

于 2013-10-14T15:05:34.630 回答