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

本文介绍了一种使用 SQL Server 实现的部门树状结构设计方法。通过建立 Department 表并利用递归公用表表达式 (CTE),可以有效地查询出组织结构的层级关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


http://blog.youkuaiyun.com/heyangyi_19940703/article/details/51456064

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

一.数据库关系结构设计

在SqlSever中:我们设计部门表:Department,结构如下:
Colummn NameData TypeAllow Nulls说明
Idint 主键
Pidint 父级ID
DeptNamenvarchar(50) 部门名称
添加测试数据如下:
添加存储过程:
[sql]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. ALTER PROCEDURE [dbo].[pSelectDepartment]   
  2. @Id int  
  3. AS  
  4. BEGIN  
  5.     with cte as  
  6.     (  
  7.         select Id,Pid,DeptName,0 as lvl from Department  
  8.         where Id = @Id  
  9.         union all  
  10.         select d.Id,d.Pid,d.DeptName,lvl+1 from cte c inner join Department d  
  11.         on c.Id = d.Pid  
  12.     )  
  13.     select * from cte  
  14. END  

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值