我有一张表格,用于存储MemberID
和InvitationToID
我想知道有多少成员在我之下,直到第六级。
MemberID InvitedTO
-------- ---------
1 3
1 2
1 4
2 a
2 b
3 c
3 d
a aa
b bb
aa ccc
如果我通过MemberID = 1
,那么我应该得到3,2,4的所有孩子InvitationToID
以及6级以下的孩子。
我使用此CTE但显示错误:
with Userct as
(
select
ps.InvitedTO, ps.MemberID, 0 as steps
from
Pointsystem ps
where
ps.MemberID = '1'
Union all
select
Userct.InvitedTO, Userct.MemberID, Userct.steps + 1
from
Userct
)
select *
from Userct er
inner join Pointsystem pr on pr.InvitedTO = er.MemberID
我怎样才能获得最高6级的所有邀请。
答案 0 :(得分:2)
您需要在CTE中使用INNER JOIN
来启用递归:
with UserCTE as
(
select
ps.InvitedTO, ps.MemberID, 0 as steps
from
Pointsystem ps
where
ps.MemberID = '1'
Union all
select
pr.InvitedTO, pr.MemberID, u.steps + 1
from
UserCTE u
inner join
Pointsystem pr on pr.MemberID = u.InvitedTo
)
select *
from UserCTE
where steps <= 6