自我加入以获取员工经理的姓名

Tip*_*ppu 10 sql t-sql database sql-server

您好我有一个包含以下列的员工表

Emp_id, Emp_Name and Mgr_id.
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个将列出的视图

Emp_id, Emp_name, Mgr_id and Mgr_name(通过交叉加入Employee表).我尝试了外连接,内连接等,但我无法做到正确.

任何帮助都非常感谢.

CREATE TABLE [dbo].[tblEmployeeDetails](
[emp_id] [bigint] NOT NULL, 
[emp_name] [nvarchar](200) NULL,    
[emp_mgr_id] [bigint] NULL, CONSTRAINT [PK_tblEmployeeDetails] PRIMARY KEY CLUSTERED (
[emp_id] ASC )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] ) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

Yaq*_*mad 19

CREATE VIEW AS
SELECT e1.emp_Id EmployeeId, e1.emp_name EmployeeName, 
       e1.emp_mgr_id ManagerId, e2.emp_name AS ManagerName
FROM   tblEmployeeDetails e1
       JOIN tblEmployeeDetails e2
       ON e1.emp_mgr_id = e2.emp_id
Run Code Online (Sandbox Code Playgroud)

编辑:左连接将工作.

CREATE VIEW AS 
SELECT e1.emp_Id EmployeeId, e1.emp_name EmployeeName,  
       e1.emp_mgr_id ManagerId, e2.emp_name AS ManagerName 
FROM   tblEmployeeDetails e1 
       LEFT JOIN tblEmployeeDetails e2 
       ON e1.emp_mgr_id = e2.emp_id
Run Code Online (Sandbox Code Playgroud)


Poe*_*HaH 6

   SELECT b.Emp_id, b.Emp_name,e.emp_id as managerID, e.emp_name as managerName
    FROM Employee b
    JOIN Employee e ON b.Emp_ID = e.emp_mgr_id
Run Code Online (Sandbox Code Playgroud)

试试这个,这是一个加入自己的经理:)