自联接:表别名上的SQL解析错误

时间:2013-04-02 13:19:09

标签: mysql sql oracle11g self-join table-alias

使用简单的自我加入列出员工经理:

CREATE VIEW AS 
SELECT e1.EMP_ID EmployeeId, e1.FNAME EmployeeName,  
       e1.MANAGER ManagerName
FROM   EMPLOYEE e1 
       LEFT JOIN EMPLOYEE e2 
       ON e1.MANAGER = e2.EMP_ID

有问题的表是EMPLOYEE,主键是EMP_ID。

MySQL和Oracle都返回代码错误;虽然我尝试了许多不同的变体,但主要的障碍是对所讨论的表(e1和e2)使用别名,而dbms认为这些都不是合法的标识符。

1 个答案:

答案 0 :(得分:3)

您的观点需要一个名称:

CREATE VIEW v_emp AS 
SELECT e1.EMP_ID EmployeeId, e1.FNAME EmployeeName,  
       e1.MANAGER ManagerName
FROM   EMPLOYEE e1 
       LEFT JOIN EMPLOYEE e2 
       ON e1.MANAGER = e2.EMP_ID