多点恒心,多点信心,多点细心,多点创新!

 

查询父类下所有子类

建立数据库:
1create table temptable(
2cid int,id_name varchar(50),pid int)
3insert into temptable values(1,'1',0)
4insert into temptable values(2,'2',1)
5insert into temptable values(3,'3',2)
6insert into temptable values(4,'4',3)
7insert into temptable values(5,'5',4)

查询子类:
 1select * from temptable
 2
 3declare @cid varchar(2000) ;
 4declare @tempid varchar(2000) ;
 5declare @oldid varchar(2000);
 6
 7set @cid='';
 8set @tempid='';
 9set @oldid='';
10
11select @cid=@cid+Convert(varchar,cid)+',' from temptable where pid=1
12if len(@cid)>0
13   set @cid=left(@cid,len(@cid)-1)
14
15create table #temp(tid int)
16set @oldid=@cid
17
18print @cid
19
20while len(@oldid)>0
21begin
22   exec('insert into #temp select cid from temptable where pid in('+@oldid+')')
23   set @tempid=''
24   select @tempid=@tempid+convert(varchar,tid)+',' from #temp
25   if len(@tempid)>0
26      set @tempid=left(@tempid,len(@tempid)-1)
27   set @oldid=@tempid;
28   delete from #temp
29   set @cid=@cid+','+@tempid
30end
31DROP TABLE #temp
32
33print @cid
34
35if right(@cid,1)=','
36   set @cid=left(@cid,len(@cid)-1)
37
38if len(@cid)>0
39  exec('select * from temptable where cid in ('+@cid+')')
40
41

posted on 2006-04-12 10:46  Jerrie  阅读(343)  评论(0)    收藏  举报

导航