sql server 2000 查询语句问题
现在有两张表,
create table Depart(id int , DepartName varchar(10))
insert into Depart values(1 ,'技术部')
insert into Depart values(2 ,'网络部')
insert into Depart values(3 ,'营销部')
insert into Depart values(4 ,'市场部')
create table User(id int , Name varchar(10),DepartID int,Permission varchar(20))
insert into User values(1,'一号',1,'1/2/3')
insert into User values(2,'二号',2,'-1')
insert into User values(3,'三号',3,'3/4')
insert into User values(4,'四号',4,'-1')
第一张表是部门,第二张是用户,用户表的DepartID字段和Permission字段对应部门表的ID,Permission字段为-1代表无权限,而'1/2/3'代表管理id为1 2 3的三个部门。现在我想得到这样一个效果,查询一个部门ID,列举出这个部门的管理者所有管理的部门ID。假如查询ID为1的部门,枚举出用户中DepartID为1的有权限用户,再根据这些有权限用户的权限枚举出这些用户管理的部门,再根据那些部门中的有权限用户继续枚举,直到枚举到的所有用户权限为-1为止。例如查询Depart表ID是1时,先得到用户ID=1,Permission='1/2/3' 根据1/2/3得到Depart表中ID=1 2 3的部门, 1部门只有一个有权限用户已经枚举过,所以去掉,2号部门用户只有一个权限-1的 到这里停止,3号部门有一个用户权限为'3/4' 3号部门的一个有权限用户也已经枚举过,去掉,4号部门用户权限-1,结束。最后得到1 2 3 4。也许表述的不是很清楚,但是大致意思就是这样,请问如何写语句啊?还有,一个部门里不一定只有一个人,但是保证一个部门只有一名管理者。
------解决方案--------------------
if object_id('tempdb..#User') is not null
drop table #User;
create table #User(id int , Name Nvarchar(10),DepartID int,Permission varchar(20))
insert into #User values(1,N'一号',1,'1/2/3')
insert into #User values(2,N'二号',2,'-1')
insert into #User values(3,N'三号',3,'3/4')
insert into #User values(4,N'四号',4,'-1')
;with t as
(
select id,Name,DepartID,
substring(Permission+'/',1,charindex('/',Permission+'/')-1) as Permission
,substring(Permission+'/',charindex('/',Permission+'/')+1,len(Permission+'/')) as PermissionSplit
from #User
union all
select id,Name,DepartID
,substring(PermissionSplit,1,charindex('/',PermissionSplit)-1) as Permission
,substring(PermissionSplit,charindex('/',PermissionSplit)+1,len(PermissionSplit)) as PermissionSplit
from t