【问题标题】:SQL Self-join on the same lineSQL 自连接在同一行
【发布时间】:2014-03-07 00:42:58
【问题描述】:

我正在尝试创建一个报告,其中包含员工的名字和姓氏以及他们的经理的名字和姓氏。我正在尝试进行自我加入。

  • 在 ERD 上有:
    • EMP_NUM 是员工 ID
    • EMP_LNAME - 员工姓氏
    • EMP_FNAME - 员工名字
    • EMP_MANAGER,即经理 ID(如果员工是经理,则经理 ID 与员工 ID 相同。)

我似乎无法成功编译。我还在学习,所以任何帮助/提示都会很棒。我正在使用 Oracle SQL Developer。

 SELECT  EMPLOYEE.EMP_NUM "Employee ID",
 EMPLOYEE.EMP_LNAME "Employee First Name",
 EMPLOYEE.EMP_FNAME "Employee Last Name",
 EMPLOYEE.EMP_MANAGER "Managers ID for Employee",
 E2.EMP_LNAME as ManagerEMP_LNAME,
 E2.EMP_FNAME as ManagerEMP_FNAME
 FROM CARRM.EMPLOYEE
 left outer join CARRM E2 on EMPLOYEE.EMP_MANAGER = E2.EMP_NUM; 

【问题讨论】:

  • 您是否打算拥有“。” CARRM 和 EMPLOYEE 之间?如果您打算将其用作别名,则它是不正确的。 from 和 join 中的名称有问题。
  • CARRM 是数据库的名称。

标签: sql self-join


【解决方案1】:

在 from 中,您提到了表的名称“Carrm.Employee”,但在左外连接中,您似乎只提到了数据库的名称“Carrm”。试试下面的

SELECT  E1.EMP_NUM "Employee ID",
E1.EMP_LNAME "Employee First Name",
 E1.EMP_FNAME "Employee Last Name",
 E1.EMP_MANAGER "Managers ID for Employee",
 E2.EMP_LNAME as ManagerEMP_LNAME,
 E2.EMP_FNAME as ManagerEMP_FNAME
 FROM CARRM.EMPLOYEE E1
 left outer join CARRM.Employee E2 on E1.EMP_MANAGER = E2.EMP_NUM; 

【讨论】:

  • 谢谢。这成功地遵守了。总是小事..试着抓住它们,但当你盯着它看太久时,它就会融入其中。
猜你喜欢
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2013-03-03
  • 2017-07-17
相关资源
最近更新 更多