【SqlServer-无限递归树状图结构设计和查询】

来源:互联网 发布:朝鲜米格29知乎 编辑:程序博客网 时间:2024/06/06 11:37

在现实生活中,公司的部门设计会涉及到很多子部门,然后子部门下面又存在子部门,形成类似判断的树状结构,比如说评论楼中楼的评论树状图,职位管理的树状图结构等等,实现类似的树状图数据结构是在开发中经常出现的。

一.数据库关系结构设计

在SqlSever中:我们设计部门表:Department,结构如下:
Colummn NameData TypeAllow Nulls说明Idint 主键Pidint 父级IDDeptNamenvarchar(50) 部门名称添加测试数据如下:
添加存储过程:
ALTER PROCEDURE [dbo].[pSelectDepartment] @Id intASBEGINwith cte as(select Id,Pid,DeptName,0 as lvl from Departmentwhere Id = @Idunion allselect d.Id,d.Pid,d.DeptName,lvl+1 from cte c inner join Department don c.Id = d.Pid)select * from cteEND

执行存储过程,现在查询的是Id=1即,总部下面的部门分布情况树状图。


1 0