最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

mssqlserver树形结构的存储与查询实例

来源:动视网 责编:小采 时间:2020-11-09 10:02:32
文档

mssqlserver树形结构的存储与查询实例

mssqlserver树形结构的存储与查询实例:mssql server 树形结构的存储与查询实例 设计中常常会遇到需要存储树形结构,比如员工关系表、组织结构表,等等。 sql code --测试数据 create table #employees( employeecode varchar(20) not null primary key cluster
推荐度:
导读mssqlserver树形结构的存储与查询实例:mssql server 树形结构的存储与查询实例 设计中常常会遇到需要存储树形结构,比如员工关系表、组织结构表,等等。 sql code --测试数据 create table #employees( employeecode varchar(20) not null primary key cluster



/*
可能遇到的查询问题:
1. 员工'd'的所有直接下属
2. 员工'd'的所有2级以内的下属(包括直接下属和直接下属的下属)
3. 员工'n'的所有上级(按报告线顺序列出)
4. 员工@employeecode的所有@leveldown级以内的下属(@employeecode和@leveldown以变量传入)
declare @employeecode varchar(20), @leveldown int;
set @employeecode = 'd';
set @leveldown = 2;
5. 员工@employeecode的所有@levelup级以内的上级(@employeecode和@levelup以变量传入)
declare @employeecode varchar(20), @levelup int;
set @employeecode = 'n';
set @levelup = 2;
*/
--用递归cte实现员工树形关系表

with cte as(
select
employeecode,
reporttocode,
reporttodepth = 0,
reporttopath = cast('/' + employeecode + '/' as varchar(200))
from #employees
where reporttocode is null
union all
select
e.employeecode,
e.reporttocode,
reporttodepth = mgr.reporttodepth + 1,
reporttopath = cast(mgr.reporttopath + e.employeecode + '/' as varchar(200))
from #employees e
inner join cte mgr
on e.reporttocode = mgr.employeecode
)
select * from cte order by reporttopath

文档

mssqlserver树形结构的存储与查询实例

mssqlserver树形结构的存储与查询实例:mssql server 树形结构的存储与查询实例 设计中常常会遇到需要存储树形结构,比如员工关系表、组织结构表,等等。 sql code --测试数据 create table #employees( employeecode varchar(20) not null primary key cluster
推荐度:
标签: 查询 存储 案例
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top