2014-09-19 52 views
0

假设我有一个员工表。我有名称和经理列。假设有10名员工,其中2名是经理。所以Name将有10个名称,而Manager名称将位于Manager列中。查询员工表的自加入

如何使用自连接?我只是在学习自我加入

+0

你究竟在做什么(可能是样本数据和期望的结果)?从你的问题来看,你不清楚为什么你需要将表加入自己。 – sgeddes 2014-09-19 01:00:24

+0

谢谢,我想学习自己加入申请这个条件。 Donal在下面提到。 – Learner 2014-09-19 01:33:07

回答

1

要执行自我加入,只需给同一个表另外一个别名。 例如,在您的员工表中,您将拥有一个managerid - 存储经理的id。

例如,你的表是这样的: 然后得到经理的名字 - - 你只是自连接到的职员表上经理ID使用不同的别名(我在下面的示例中使用M)

CREATE TABLE Employees (id INT, Name VARCHAR(20), ManagerId INT); 

要得到员工的名字和他/她的经理的名字,你会做这样的事情:

SELECT 
e.Name AS EmployeeName, 
ISNULL(m.Name, 'No Manager') AS ManagerName 
FROM employee e 
LEFT JOIN employee m on m.id = e.ManagerId 

如果您想了解更多关于自联接 - 见here

+0

谢谢,但如何与自我加入? – Learner 2014-09-19 01:26:08

+0

这是一个自加入。该表正在加入自己 - 员工正在加入员工。要进行自我加入 - 只需使用不同的别名。在这个例子中,我使用e和m作为同一个表 - 员工的不同别名。 – Donal 2014-09-19 01:29:55

+2

这里有一个很好的自我加入的解释:http://stackoverflow.com/questions/2458519/explanation-of-self-joins – Donal 2014-09-19 01:34:13