求解SQL存储过程

xueyou98 2010-07-12 02:54:04
--生成测试数据
create table BOM(ID INT,PID INT,MSG VARCHAR(1000))
insert into BOM select 1, 0, '中国'
union all select 2, 1, '北京'
union all select 3, 1, '上海'
union all select 4, 1, '湖北'
union all select 5, 1, '湖南'
union all select 6, 4, '武汉'
union all select 7, 4, '孝感'
union all select 8, 5, '长沙'
union all select 9, 5, '岳阳'
union all select 10, 2, '海淀区'
union all select 11, 2, '朝阳区'
union all select 12, 10, '上地'
union all select 13, 10, '西三旗'

go

--创建用户定义函数
create function f_getChild(@ID VARCHAR(10))
returns @t table(ID VARCHAR(10),PID VARCHAR(10),Level INT)
as
begin
declare @i int,@ret varchar(8000)
set @i = 1
insert into @t select ID,PID,@i from BOM where PID = @ID

while @@rowcount<>0
begin
set @i = @i + 1

insert into @t
select
a.ID,a.PID,@i
from
BOM a,@t b
where
a.PID=b.ID and b.Level = @i-1
end
return
end
go

--执行查询
select * from dbo.f_getChild(0)
go

--输出结果
/*
ID PID Level
1 0 1
2 1 2
3 1 2
4 1 2
5 1 2
10 2 3
11 2 3
6 4 3
7 4 3
8 5 3
9 5 3
12 10 4
13 10 4
*/

--删除测试数据
drop function f_getChild
drop table BOM



以上是做测试用的,但达不到我的要求

我想实现的是这样的形式

/*
ID PID Level
1 0 1
2 1 2
10 2 3
12 10 4
13 10 4
11 2 3
3 1 2
4 1 2
6 4 3
7 4 3
5 1 2
8 5 3
9 5 3

*/

求告知存储过程或函数写法,谢谢!
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xueyou98 2010-07-12
  • 打赏
  • 举报
回复
非常感谢四楼,要的就是这样的算法

多谢!结贴~
zl59503020 2010-07-12
  • 打赏
  • 举报
回复
。。。。。。没看懂。。。
htl258_Tony 2010-07-12
  • 打赏
  • 举报
回复
--生成测试数据
create table BOM(ID INT,PID INT,MSG VARCHAR(1000))
insert into BOM select 1, 0, '中国'
union all select 2, 1, '北京'
union all select 3, 1, '上海'
union all select 4, 1, '湖北'
union all select 5, 1, '湖南'
union all select 6, 4, '武汉'
union all select 7, 4, '孝感'
union all select 8, 5, '长沙'
union all select 9, 5, '岳阳'
union all select 10, 2, '海淀区'
union all select 11, 2, '朝阳区'
union all select 12, 10, '上地'
union all select 13, 10, '西三旗'

go

--创建用户定义函数
create function f_getChild(@ID VARCHAR(10))
returns @t table(ID VARCHAR(10),PID VARCHAR(10),Level INT,px VARBINARY(8000))
as
begin
declare @i int,@ret varchar(8000)
set @i = 1
insert into @t select ID,PID,@i,CAST(ID AS VARBINARY) from BOM where PID = @ID

while @@rowcount<>0
begin
set @i = @i + 1

insert into @t
select
a.ID,a.PID,@i ,b.px+CAST(a.id AS VARBINARY)
from
BOM a,@t b
where
a.PID=b.ID and b.Level = @i-1
end
return
end
go

--执行查询
select ID,PID,Level from dbo.f_getChild(0) ORDER BY px
go

--输出结果
/*
ID PID Level
---------- ---------- -----------
1 0 1
2 1 2
10 2 3
12 10 4
13 10 4
11 2 3
3 1 2
4 1 2
6 4 3
7 4 3
5 1 2
8 5 3
9 5 3

(13 行受影响)
*/

--删除测试数据
drop function f_getChild
drop table BOM
永生天地 2010-07-12
  • 打赏
  • 举报
回复
SQL Server 中树形表数据的处理总结
http://blog.csdn.net/xys_777/archive/2010/06/15/5672481.aspx
有类似
SQL77 2010-07-12
  • 打赏
  • 举报
回复
又是BOM,

等CTE高手来
管理信息系统作为企业进行整体信息处理的支柱,应具有如下五个方面的作用或特点: 1.是一个人一机结合的系统。 2.因为建立的系统要成为整个组织的心脏和信息交换中心,因此它要包括企业各种数据输入,存储,加工,查询,生成计划,物资供应,帐务帐目,生产,销售等日常信息处理。 3.数据处理要速度高,成本低。 4.因为信息模型,处理过程相对确定,所以数据(而不是业务目标,不同用户)成为系统工作的驱动力。 5.系统设计要符合企业实际情况,求解过程和结果达到最优化。 一个管理信息系统的工作过程可大致描述如下:首先人们从观察客观事物(具体应用)入手,收集到大量信息,在对这些信息进行记录、整理和分类后送入有关的数据库中保存起来。随后,MIS的使用者根据各自的需求向数据库发出相应的访问请求,系统响应这些请求,从数据库中筛选出所需数据,并对数据进行加和处理,形成用户所需的计划、控制等决策信息。由些可见,一个管理信息系统不仅是一个简单的统计系统(如企业的产品统计)、一个数据更新系统(如图书馆中的借阅系统)、一个工作状态报告系统(如商场中的服务监视、人员排班表),而且要包含计划、控制和决策的功能。一个管理信息系统
软件设计师考试真题 附带2010年的考试大纲 考试科目1:计算机与软件工程知识  1.计算机科学基础   1.1 数制及其转换      • 二进制、十进制和十六进制等常用制数制及其相互转换   1.2 数据的表示      • 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)      • 非数值表示(字符和汉字表示、声音表示、图像表示)      • 校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码)   1.3 算术运算和逻辑运算      • 逻辑代数的基本运算和逻辑表达式的化简   1.4 数学基础知识      • 命题逻辑、谓词逻辑、形式逻辑的基础知识      • 常用数值计算(误差、矩阵和行列式、近似求解方程、插值、数值积分)      • 排列组合、概率论应用、应用统计(数据的统计分析)      • 运算基本方法(预测与决策、线性规划、网络图、模拟)   1.5 常用数据结构      • 数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树、平衡树、线索树、线索树、堆)、图等的定义、存储和操作      • Hash(存储地址计算,冲突处理)   1.6 常用算法      • 排序算法、查找算法、数值计算方法、字符串处理方法、数据压缩算法、递归算法、图的相关算法      • 算法与数据结构的关系、算法效率、算法设计、算法描述(流程图、伪代码、决策表)、算法的复杂性  2.计算机系统知识   2.1 硬件知识    2.1.1 计算机系统的组成、体系结构分类及特性      • CPU和存储器的组成、性能和基本工作原理      • 常用I/O设备、通信设备的性能,以及基本工作原理      • I/O接口的功能、类型和特性      • I/O控制方式(中断系统、DMA、I/O处理机方式)      • CISC/RISC,流水线操作,多处理机,并行处理   2.1.2 存储系统      • 主存-Cache存储系统的工作原理      • 虚拟存储器基本工作原理,多级存储体系的性能价格      • RAID类型和特性   2.1.3 安全性、可靠性与系统性能评测基础知识      • 诊断与容错      • 系统可靠性分析评价      • 计算机系统性能评测方式   2.2 软件知识    2.2.1 操作系统知识      • 操作系统的内核(中断控制)、进程、线程概念      • 处理机管理(状态转换、共享与互斥、分时轮转、抢占、死锁)      • 存储管理(主存保护、动态连接分配、分段、分页、虚存)      • 设备管理(I/O控制、假脱机)      • 文件管理(文件目录、文件组织、存取方法、存取控制、恢复处理)      • 作业管理(作业调度、作业控制语言(JCL)、多道程序设计)      • 汉字处理,多媒体处理,人机界面      • 网络操作系统和嵌入式操作系统基础知识      • 操作系统的配置    2.2.2 程序设计语言和语言处理程序的知识      • 汇编、编译、解释系统的基础知识和基本工作原理      • 程序设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用      • 各类程序设计语言主要特点和适用情况   2.3 计算机网络知识      • 网络体系结构(网络拓扑、OSI/RM、基本的网络协议)      • 传输介质、传输技术、传输方法、传输控制      • 常用网络设备和各类通信设备      • Client/Server结构、Browser/Server结构      • LAN拓扑,存取控制,LAN的组网,LAN间连接,LAN-WAN连接      • 因特网基础知识以及应用      • 网络软件      • 网络管理      • 网络性能分析   2.4 数据库知识      • 数据库管理系统的功能和特征      • 数据库模型(概念模式、外模式、内模式)      • 数据模型,ER图,第一范式、第二范式、第三范式      • 数据操作(集合运算和关系运算)      • 数据库语言(SQL)      • 数据库的控制功能(并发控制、恢复、安全性、完整性)      • 数据仓库和分布式数据库基础知识   2.5 多媒体知识      • 多媒体系统基础知识,多媒体设备的性能特性,常用多媒体文件格式      • 简单图形的绘制,图像文件的处理方法      • 音频和视频信息的应用      • 多媒体应用开发过程   2.6 系统性能知识      • 性能指标(响应时间、吞吐量、周转时间)和性能设计     

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧