救助大侠!SQL递归语句不会写了!牛逼的进啊!!!!!!!!

superplayer606 2015-11-29 08:24:30
有这么个需求,我想了半天实在想不出SQL语句咋写了!求大侠们指点!!!

数据库中有 huiyuan 这张表,表中有tjrhyh(推荐人会员号)和LD(是否是领导)字段。 表中记录的是会员的信息, trjhyh指的是该会员的推荐人会员号(说白了就是该会员的上线),LD字段为0或1 ,当为0时,该会员非领导,为1时,表明该会员是领导(会员系统中的领导)。

现在要求在SQL Server中列出某会员的所有下线会员,我感觉这应该就是简单的递归,用with来写语句应该够了。关键还有一个特殊需求,那就是在列下线会员时,递归到 领导时,该领导所有的下线是不列出来的,相当于隔离领导所有的下线。

比如说,张三下线是李四,李四下线是王五,王五下线是赵六。 且王五是领导,其余人均不是领导。那么张三的下线会员依次是:李四,王五。 (因为王五是领导,所以他的下线赵六就被隔离掉,被去除了)。

大侠们,不知道我表述的清不清楚!我现在能写到的SQL语句就是:
with
xiaxianhuiyuan(hyh,tjrhyh) as
(select Hyh,TjrHyh from HuiYuan where TjrHyh='*********'
union all
select huiyuan.Hyh,huiyuan.TjrHyh from HuiYuan,xiaxianhuiyuan

where xiaxianhuiyuan.hyh=HuiYuan.TjrHyh
)
select * from xiaxianhuiyuan
可现在这些语句只会列出会员号为******的会员的所有下线!!没有做到隔离领导!!!要发轰了!想了好几天,想不出咋写sql语句才能实现啊!!!!!大侠们速来啊!!!!
...全文
89 1 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
superplayer606 2016-01-03
谢谢!很给力!!解决了偶的问题!
回复
专注or全面 2015-11-29
create table huiyuan
(
	hyh int,
	tjhyh int,
	ld bit

)

insert into huiyuan values (1,0,1)

--1号会员的直属下线
insert into huiyuan values (2,1,0)
insert into huiyuan values (3,1,0)
insert into huiyuan values (4,1,1)
insert into huiyuan values (5,1,0)


--1号会员下线是领导,这个领导的下线
insert into huiyuan values (6,4,0)

--1号会员下线非领导
insert into huiyuan values (7,2,0)
insert into huiyuan values (8,2,0)
insert into huiyuan values (9,2,0)
insert into huiyuan values (10,2,0)
insert into huiyuan values (11,3,0)
--非推荐会员,也就是没有人推荐他
insert into huiyuan values (12,0,0)


--1号会员所有的下线
;with cte(hyh,tjhyh) as
(select hyh,tjhyh from HuiYuan where hyh=1
union all 
select huiyuan.Hyh,huiyuan.tjhyh from HuiYuan,cte 
where cte.hyh=HuiYuan.tjhyh  
)
select * from cte
回复
专注or全面 2015-11-29
一个会员的下线是领导,那么要不要这个领导的下线啊
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-11-29 08:24
社区公告
暂无公告