无限级根据Id获得所有子节点数据
2013-11-29 18:31
459 查看
if exists (select 1 from sysobjects where id = object_id('tb1') and type = 'U') drop table tb1 go create table tb1 ( Id int null, name varchar(50) null, pId int null, level int, sort int ) go if exists (select * from sysobjects where name='proc_menu_select') drop procedure proc_menu_select go create proc proc_menu_select(@id int,@t int) as declare @i int declare @count int, @tmpid int create table #tb(id int,name varchar(50),pId int,level int,sort int) select @count=COUNT(1) from tb_Menu where pId=@id insert #tb select m.id,m.name,m.pId,m.level,m.sort from tb_Menu m where pId=@id select @i=level from tb_Menu where id=@id while(@count<>0) begin set @i=@i+1 print @i select @count=COUNT(1) from tb_Menu m left join #tb on #tb.id=m.pId where #tb.level=@i insert #tb select m.id,m.name,m.pId,m.level,m.sort from tb_Menu m left join #tb on #tb.id=m.pId where #tb.level=@i end select id,name,pId,level,sort from #tb go exec proc_menu_select 3,1 select * from tb_Menu; select * from tb1
相关文章推荐
- 根据父级编号获取无限树结构数据表中所有子节点的数据
- [Oracle PL/SQL]当数据表设计成具有父ID的时候,当需要选择所有与父ID同根生的所有节点的时候,使用的SQL语句
- JqGrid获得所有选中行数据ID数组,获取所有行的ID数组
- 如何根据进程名称获得所有进程ID
- 根据分类ID获得所有子ID和所有父ID
- 学习笔记:无限级目录删除(ID-PID模式),根据ID删除下面所有子ID
- SQL SERVER 2000 遍历父子关系数据的表(二叉树)获得所有子节点 所有父节点及节点层数函数
- 以迭代(非递归)方式获取无限分类中所有的最后一层子节点数据
- jquery 根据表格行ID 获得数据
- MySql如何根据输入的id获得树形结构的子节点列表:使用自连+SUBSTRING_INDEX函数
- 获得ztree的所有子节点id
- 递归调用(id,pid,name)根据一个id获取它所有的子节点
- SQL SERVER 2000 遍历父子关系数据的表(二叉树)获得所有子节点 所有父节点及节点层数函数
- MySQL中进行树状所有子节点的查询 . mysql根据父id 查询所有的子id
- java递归根据节点ID得到所有父节点名称
- 根据id查询所有子节点/父节点,mysql 以及ssm前后台处理流程
- mysql 根据id查询所有子节点/父节点
- java如何根据list以及根节点id获取树形展示数据?
- SQL SERVER 2000 遍历父子关系数据的表(二叉树)获得所有子节点 所有父节点及节点层数函数
- mysql sql 根据父级id查询书所有的子孙级数据,或根据子级id查询对应的父级