用递归处理树型结构(表结构)
来源:互联网 发布:查看淘宝历史价格 编辑:程序博客网 时间:2024/04/30 00:51
/*
用递归处理树型结构(表结构)
递归求城市,从小到大的,或从大到小。*/
/*
等依次类推得目录树结构
我想写一个函数 传入部门ID号后 马上得到相应的 部门结构 如
输入8得到的是市场部-东南市场-上海市
输入9得到的是市场部-西北市场-北京市
输入6得到的是市场部-西北市场
输入3得到的是市场部
输入1得到的是所有部门
*/
--建立测试环境
create table TableA(deptID int,deptName nvarchar(100),parentID int)
insert into TableA
select 1,'所有部门',0 union all
select 2,'财务部', 1 union all
select 3,'市场部', 1 union all
select 4,'仓库管理',1 union all
select 5,'东北市场',3 union all
select 6,'西北市场',3 union all
select 7,'东南市场',3 union all
select 8,'上海市', 7 union all
select 9,'北京市', 6
--建立函数
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AllDept]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[AllDept]
GO
CREATE function AllDept(@iDeptID int)
returns nvarchar(1000)
as
begin
declare @vReturnValue nvarchar(1000)
,@iParentID int
,@vCurrentDeptName nvarchar(200)
select @vReturnValue=''
,@vCurrentDeptName=''
if(exists(select top 1 0 from TableA where DeptID=@iDeptID and parentID=0))
begin
select @vReturnValue =@vReturnValue+deptName+'-'
from TableA
where parentID<>0
return (@vReturnValue)
end
if(exists(select top 1 0 from TableA where DeptID=@iDeptID and parentID=1))
begin
select @vReturnValue=@vReturnValue+deptName
from TableA where DeptID=@iDeptID and parentID=1
--return (@vReturnValue)
--set @vReturnValue=@vReturnValue+dbo.AllDept(@iParentID)
end
else
begin
select @iParentID=parentID
,@vCurrentDeptName=deptName
from TableA
where DeptID=@iDeptID
set @vReturnValue=@vReturnValue+@vCurrentDeptName+'-'+dbo.AllDept(@iParentID)
--return (@vReturnValue)
end
return (@vReturnValue)
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
select *,dbo.AllDept(deptid) AllDeptName from tableA
select * from tableA
--显示结果
deptId deptName AllDeptName
1 所有部门 0 财务部-市场部-仓库管理-东北市场-西北市场-东南市场-上海市-北京市-
2 财务部 1 财务部
3 市场部 1 市场部
4 仓库管理 1 仓库管理
5 东北市场 3 东北市场-市场部
6 西北市场 3 西北市场-市场部
7 东南市场 3 东南市场-市场部
8 上海市 7 上海市-东南市场-市场部
9 北京市 6 北京市-西北市场-市场部
--删除测试环境
drop table tableA
drop table dbo.AllDept
- 用递归处理树型结构(表结构)
- delphi递归处理树型结构
- 树结构递归查询
- java 递归树结构
- 递归树结构
- 递归遍历树结构
- 递归查询表结构
- 树型结构的处理
- sql 树型结构查询 递归方式
- 递归算法 实现树结构
- PB遍历递归树结构
- mysql递归查树结构
- JS递归遍历树结构
- 用二叉链表存储结构构造一棵二叉树,然后用栈结构进行非递归遍历
- hibernate树结构表的处理
- sqlserver 树结构递归(向上递归和向下递归)
- 非递归方式线性结构转换为树型结构(zTree核心)
- 使用递归,从部门表生成树结构(组织结构树)
- 关于败家的一点点感悟
- jBPM3.12用户指南中文翻译----第十九章 可插式架构
- 一招克死所有病毒!
- 对象
- 英文操作系统如何正常显示中文软件
- 用递归处理树型结构(表结构)
- Linux下的samba服务器配置文件详解 smb.conf
- MIT开发的画图程序
- Informatica客户端无法连接到服务器端
- 两个vs2005的问题
- 被诅咒的油画
- TCP端口:作用,漏洞,操作详析
- SQL连接基础类
- 仙居3日自助游总结