请帮忙。
我有一个名为Employee的表。
我希望该表中的所有记录都与parentid
进行自我加入记录就像
A是父母
B是A
的孩子
C是A
的孩子
D是C的孩子
F是B
的孩子
E是家长
G是E
的孩子
H是G的孩子
如果我把自己加入并把所有记录放在A是父母的地方我只得到A,B,C而不是D和F
我想要所有记录,其中A是父母,如A,B,C,D,E
答案 0 :(得分:3)
如果没有一定数量的父/子级别,您将需要使用递归cte。假设您正在使用SQL Server 2005或更高版本,那么这应该是您正在寻找的内容:
with cte as (
select id,
id parentid
from employee
where parentid is null
union all
select e.id,
c.parentid
from employee e
join cte c on e.parentid = c.id
)
select id
from cte
where parentid = 'A'
顺便说一句 - 这导致A,B,C,D和F - 而不是E.我认为这是你帖子中的拼写错误。
答案 1 :(得分:0)
select distinct(e.ParentName) from Employee e left join Employee e1
on e.employeeId=e1.ParentID