我的表结构如下:
Id Name Parent
1 A-1 0
2 B-1 0
3 A-11 1
4 A-12 1
5 A-13 1
6 A-14 1
7 A-111 3
8 A-112 3
9 A-113 3
10 A-114 3
11 B-11 2
12 B-12 2
13 B-13 2
14 B-14 2
15 B-111 11
16 B-112 11
17 B-113 11
18 B-114 11
我想要显示
Id Name Parent GrandParentName
1 A-1 0
2 B-1 0
3 A-11 1
4 A-12 1
5 A-13 1
6 A-14 1
7 A-111 3 A-1
8 A-112 3 A-1
9 A-113 3 A-1
10 A-114 3 A-1
11 B-11 2
12 B-12 2
13 B-13 2
14 B-14 2
15 B-111 11 B-1
16 B-112 11 B-1
17 B-113 11 B-1
18 B-114 11 B-1
不使用With Clause和Inner Query?
答案 0 :(得分:3)
好吧不能说我喜欢它(它不是通用的,使用固定连接),但如果你只想要GrandParent名字,你可以用2个连接来做:
select T.Id, T.Name, T.Parent, G.Name as GrandParentName
from Table1 as T
left outer join Table1 as P on P.Id = T.Parent
left outer join Table1 as G on G.Id = P.Parent
order by T.Id asc
<强> sql fiddle demo 强>