2012-03-11 61 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