SqlServer找出所有的子节点,并按树形结构、层次查询
发布时间:2020-12-12 12:41:13 所属栏目:MsSql教程 来源:网络整理
导读:/* 效果如下(节点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
/* 效果如下(节点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],[parentid]) VALUES ( 2,N'报价管理',[parentid]) VALUES ( 3,N'合同管理',[parentid]) VALUES ( 4,N'业务机会',[parentid]) VALUES ( 5,N'任务管理',[parentid]) VALUES ( 6,N'系统管理',[parentid]) VALUES ( 7,N'客户录入',1) INSERT [oa_level] ([menuid],[parentid]) VALUES ( 8,N'个人客户录入',[parentid]) VALUES ( 9,N'企业客户',[parentid]) VALUES ( 10,N'我的客户',[parentid]) VALUES ( 11,N'客户共享',[parentid]) VALUES ( 12,N'用户管理',6) INSERT [oa_level] ([menuid],[parentid]) VALUES ( 13,N'菜单管理',[parentid]) VALUES ( 14,N'菜单编辑',13) INSERT [oa_level] ([menuid],[parentid]) VALUES ( 15,N'任务查询',5) INSERT [oa_level] ([menuid],[parentid]) VALUES ( 16,N'添加任务',[parentid]) VALUES ( 18,N'业务机会查询',4) INSERT [oa_level] ([menuid],[parentid]) VALUES ( 19,N'添加业务机会',[parentid]) VALUES ( 20,N'添加用户',12) INSERT [oa_level] ([menuid],[parentid]) VALUES ( 21,N'用户列表',[parentid]) VALUES ( 23,N'报价合同制作',2) INSERT [oa_level] ([menuid],[parentid]) VALUES ( 24,N'库存商品管理',[parentid]) VALUES ( 27,N'合同查询(订单月报)',3) INSERT [oa_level] ([menuid],[parentid]) VALUES ( 29,N'购销及服务合同查询',[parentid]) VALUES ( 31,N'设置公司',[parentid]) VALUES ( 32,N'系统角色管理',[parentid]) VALUES ( 33,N'权限管理',[parentid]) VALUES ( 34,N'查看个人信息',54) INSERT [oa_level] ([menuid],[parentid]) VALUES ( 35,N'修改个人信息',[parentid]) VALUES ( 36,N'修改登录密码',[parentid]) VALUES ( 37,N'角色菜单赋权',[parentid]) VALUES ( 38,N'配置跟单员',[parentid]) VALUES ( 25,N'配件价格查询',[parentid]) VALUES ( 26,N'报价合同(原)',[parentid]) VALUES ( 39,N'运输查询',[parentid]) VALUES ( 40,N'申请修改资料单管理',[parentid]) VALUES ( 41,N'价格等级系数设置',[parentid]) VALUES ( 42,N'配件等级设置',[parentid]) VALUES ( 43,N'配件底价设置',[parentid]) VALUES ( 44,N'总区划分管理',[parentid]) VALUES ( 45,N'分区权限分配',[parentid]) VALUES ( 46,N'角色区域赋权',[parentid]) VALUES ( 47,N'报价单(原)',[parentid]) VALUES ( 48,N'报价单制作',[parentid]) VALUES ( 49,N'报价单编辑',[parentid]) VALUES ( 50,N'报价合同编辑',[parentid]) VALUES ( 51,N'购销及服务合同添加',[parentid]) VALUES ( 52,N'购销及服务合同编辑',[parentid]) VALUES ( 53,N'配件模版管理',[parentid]) VALUES ( 54,N'个人资料',[parentid]) VALUES ( 55,N'区域管理人分配',[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]
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |