一个表中存放网站栏目.支持无限级分类.即条数据有个parentId字段.用于表示父亲栏目.id         parentId    name1          0           测试一
2          1           测试一的子栏目
3          0           测试二
4          1           测试一的子栏目二如何在执行Sql后.像下边这样?1          0           测试一
2          1           测试一的子栏目
4          1           测试一的子栏目二
3          0           测试二
我现在都是先用一条sql取出父栏目.然后再用一条sql取出子栏目.有无可行办法.一条搞定?

解决方案 »

  1.   

    Create function [dbo].[GetChild](@ID varchar(10))   
    returns @t table(ID varchar(10),ParentID varchar(10),Level int)   
    as  
    begin  
        declare @i int  
        set @i = 1   
        insert into @t select @ID,@ID,0 --当前级,本级,如果不要的话可以注释掉或再加个参数来选择操作   
        insert into @t select ID,ParentID,@i from Dept where ParentID = @ID   
      
        while @@rowcount<>0   
        begin  
            set @i = @i + 1   
            insert into @t   
            select  
                a.ID,a.ParentID,@i   
            from  
                Dept a,@t b   
            where  
                a.ParentID=b.ID and b.Level = @i-1   
        end  
        return  
    end  
      

  2.   

    二楼的在哪copy的?我没看明白啊.