SqlServer找出所有的子节点,并按树形结构、层次查询




/*
效果如下(节点6的所有子节点)
menuid  level  paths    menuname
6 0 6    系统管理
12 1 6-12 用户管理
20 2 6-12-20 添加用户
21 2 6-12-21 用户列表
13 1 6-13 菜单管理
14 2 6-13-14 菜单编辑
31 1 6-31 设置公司
32 1 6-32 系统角色管理
33 1 6-33 权限管理
37 1 6-37 角色菜单赋权
38 1 6-38 配置跟单员
41 1 6-41 价格等级系数设置
42 1 6-42 配件等级设置
43 1 6-43 配件底价设置
44 1 6-44 总区划分管理
45 1 6-45 分区权限分配
46 1 6-46 角色区域赋权
53 1 6-53 配件模版管理
55 1 6-55 区域管理人分配
56 1 6-56 消息中心


*/




if exists (select * from sysobjects where id = OBJECT_ID('[oa_level]') and OBJECTPROPERTY(id, 'IsUserTable') = 1) 
DROP TABLE [oa_level]


CREATE TABLE [oa_level] (
[menuid] [int]  NULL,
[menuname] [varchar]  (100) NULL,
[parentid] [int]  NULL)


INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 1,N'客户管理',0)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 2,N'报价管理',0)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 3,N'合同管理',0)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 4,N'业务机会',0)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 5,N'任务管理',0)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 6,N'系统管理',0)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 7,N'客户录入',1)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 8,N'个人客户录入',1)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 9,N'企业客户',1)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 10,N'我的客户',1)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 11,N'客户共享',1)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 12,N'用户管理',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 13,N'菜单管理',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 14,N'菜单编辑',13)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 15,N'任务查询',5)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 16,N'添加任务',5)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 18,N'业务机会查询',4)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 19,N'添加业务机会',4)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 20,N'添加用户',12)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 21,N'用户列表',12)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 23,N'报价合同制作',2)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 24,N'库存商品管理',2)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 27,N'合同查询(订单月报)',3)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 29,N'购销及服务合同查询',3)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 31,N'设置公司',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 32,N'系统角色管理',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 33,N'权限管理',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 34,N'查看个人信息',54)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 35,N'修改个人信息',54)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 36,N'修改登录密码',54)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 37,N'角色菜单赋权',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 38,N'配置跟单员',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 25,N'配件价格查询',2)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 26,N'报价合同(原)',2)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 39,N'运输查询',3)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 40,N'申请修改资料单管理',1)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 41,N'价格等级系数设置',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 42,N'配件等级设置',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 43,N'配件底价设置',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 44,N'总区划分管理',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 45,N'分区权限分配',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 46,N'角色区域赋权',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 47,N'报价单(原)',2)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 48,N'报价单制作',2)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 49,N'报价单编辑',2)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 50,N'报价合同编辑',2)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 51,N'购销及服务合同添加',3)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 52,N'购销及服务合同编辑',3)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 53,N'配件模版管理',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 54,N'个人资料',0)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 55,N'区域管理人分配',6)
INSERT [oa_level] ([menuid],[menuname],[parentid]) VALUES ( 56,N'消息中心',6)










--推出所有子节点并按层次列出

DECLARE @level int,@menuId int
SET @level=0 --第一次为第0层
set @menuId=6 --推出此节点的所有子节点




SELECT menuId,@level level,CONVERT(varchar(100),menuId) paths INTO #data FROM oa_level WHERE menuId=@menuId
--循环 用上一层推出下一层
WHILE @@ROWCOUNT >0
BEGIN

SET @level=@level+1

INSERT INTO #data(menuid,level,paths)
SELECT b.menuid,@level,a.paths+'-'+CONVERT(varchar(100),b.menuId) paths FROM #data a
JOIN oa_level b ON a.menuid=b.parentid AND a.level=@level-1

END


SELECT a.*,b.menuname FROM #data a,[oa_level] b where a.menuid=b.menuid ORDER BY paths asc


DROP TABLE #data






















drop table [oa_level]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值