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

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

一.数据库关系结构设计

在SqlSever中:我们设计部门表:Department,结构如下:
Colummn Name Data Type Allow Nulls 说明
Id int   主键
Pid int   父级ID
DeptName nvarchar(50)   部门名称
添加测试数据如下:
【SqlServer-无限递归树状图结构设计和查询】_第1张图片
添加存储过程:
ALTER PROCEDURE [dbo].[pSelectDepartment] 
@Id int
AS
BEGIN
	with cte as
	(
		select Id,Pid,DeptName,0 as lvl from Department
		where Id = @Id
		union all
		select d.Id,d.Pid,d.DeptName,lvl+1 from cte c inner join Department d
		on c.Id = d.Pid
	)
	select * from cte
END
【SqlServer-无限递归树状图结构设计和查询】_第2张图片
执行存储过程,现在查询的是Id=1即,总部下面的部门分布情况树状图。


你可能感兴趣的:(sqlserver)