2012-03-11 60 views
0

得到父值我有一个命名为员工SQL - 基于ID

员工表中的字段和样品表值

 
-------------------------------- 
id  name  parentid 
-------------------------------- 
1  suresh null 
-------------------------------- 
2  ram  1 
-------------------------------- 
3  ravi  2 
-------------------------------- 
4  raju  3 
-------------------------------- 

这里我需要的电流,家长和盛大的名称字段值给定id值的父值。我需要的输出如下

假设输入编号为4,然后我的预期输出是

 
name parentName grandParentName 
----------------------------------------- 
raju ravi   ram 
----------------------------------------- 

我如何写查询呢?

+1

一个自我加入可以做到这一点。 – Bridge 2012-03-11 17:11:58

回答

0

问得好!这是测试和工作。

select my.`name`, p.`name` as 'parent name', gp.`name` as 'grandparent name' 
from employee my 
left outer join employee p on p.id=my.parentid 
left outer join employee gp on gp.id = p.parentid 
where my.`id`=4 
+0

您是否必须使用LEFT JOIN来避免在parentId为null的情况下丢失“父”? – 2012-03-11 17:35:03

+0

我不认为“LEFT JOIN”会诀窍。但是“左外联合”会。 – 2012-03-11 17:59:23

+0

嗯...左加入和左外加入是一回事。 – 2012-03-11 18:03:14

3

这里亚去..

select e1.name, e2.name as parentName, e3.name as grandParentName 
from employee e1 
left join employee e2 on e1.parentId = e2.id 
left join employee e3 on e2.parentId = e3.id 

where e1.id = 4