【问题标题】:SQL command not properly ended after the as statement [duplicate]在 as 语句之后 SQL 命令未正确结束 [重复]
【发布时间】:2020-11-27 16:06:44
【问题描述】:

我想创建一个名为 PROJECT_FEMALE 的视图。来自 3 个不同的表,但 sql 给了我这个错误。

CREATE VIEW PROJECT_FEMALE 
AS
    SELECT e.Ssn, e.Fname, e.Lname, p.Pnumber, p.Pname, w.Hours
    FROM Employee AS e, Works_on AS w, Project AS p
    WHERE e.Ssn = w.Essn AND w.pno = p.Pnumber AND e.sex = 'F';

错误:

[代码:933,SQL 状态:42000] ORA-00933:SQL 命令未正确结束
[脚本位置:103 - 105]

它指向Employee 之后的声明,但我不明白问题是什么,我该如何解决?

【问题讨论】:

  • 学习使用正确的、明确的、标准的、可读的JOIN语法。
  • 是的,当我使用“加入”执行此操作时,它工作正常,我认为它来自语法。谢谢

标签: sql database oracle oracle-sqldeveloper


【解决方案1】:

Oracle不支持AS的表别名,列别名只能使用AS;所以,你的代码应该是:

CREATE VIEW PROJECT_FEMALE
AS
   SELECT e.Ssn,
          e.Fname,
          e.Lname,
          p.Pnumber,
          p.Pname,
          w.Hours
     FROM Employeee, Works_on w, Project p
    WHERE e.Ssn = w.Essn AND w.pno = p.Pnumber AND e.sex = 'F';

或(更好)

CREATE VIEW PROJECT_FEMALE
AS
   SELECT e.Ssn,
          e.Fname,
          e.Lname,
          p.Pnumber,
          p.Pname,
          w.Hours
     FROM Employee e
          INNER JOIN Works_on w ON (e.Ssn = w.Essn)
          INNER JOIN Project p ON (w.pno = p.Pnumber)
    WHERE e.sex = 'F';   

【讨论】:

    猜你喜欢
    • 2014-09-27
    • 2016-10-15
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    相关资源
    最近更新 更多