`
abalone
  • 浏览: 130674 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

基于关系数据库系统链式存储的树型结构数据,求某结点下的子树所有结点算法(t-sql语言实现)

    博客分类:
  • DB
阅读更多
CREATE FUNCTION  f_subtree(@dpcode varchar(9))  /*树型结构数据,求某结点下的的子树所有结点的自定义函数*/
RETURNS  @new table([dpcode] [varchar] (9)  ,     --结点编码
[dpname] [varchar] (20) ,  --结点名称
[dpcode_p] [varchar] (9) --此结点的父结点编码
)  AS 
BEGIN
declare @temp table([dpcode] [varchar] (9)  ,     --结点编码
[dpname] [varchar] (20) ,  --结点名称
[dpcode_p] [varchar] (9)   --此结点的父结点编码
)  --数据临时存放表
declare @t table([dpcode] [varchar] (9)  ,     --结点编码
[dpname] [varchar] (20) ,  --结点名称
[dpcode_p] [varchar] (9)   --此结点的父结点编码
)   --中间临时表
declare @tt table([dpcode] [varchar] (9)  ,     --结点编码
[dpname] [varchar] (20) ,  --结点名称
[dpcode_p] [varchar] (9)   --此结点的父结点编码
)  --中间交换临时表


delete   @temp
delete  @t
delete @tt
delete  @new


insert into @temp select *  from dpet   
  insert into @t  select * from @temp where dpcode_p=@dpcode 
  insert into @new  select * from @t  --结果临时表
  while (exists(select * from @t where dpcode in (select dpcode_p from @temp)))
    --当某层的结点全为叶子时,才停止循环
    begin
      insert into @tt select * from @t --中间交换临时表
      delete @t
      insert into @t select * from @temp where dpcode_p in
        (select dpcode from @tt)
      delete @tt
      insert into @new select * from @t
    end
  insert into @new select * from @temp where dpcode=@dpcode 

return
END

---------------------------------------------------(以下为存储过程实现)

CREATE TABLE dpet (   --树型结构数据的数据存放表结构
[dpcode] [varchar] (9)  ,     --结点编码
[dpname] [varchar] (20) ,  --结点名称
[dpcode_p] [varchar] (9)   --此结点的父结点编码
) ON [PRIMARY]

/*ms sql 2000调试通过,表temp,t,new,tt 结构与表dpet一致*/

CREATE PROCEDURE  desc_dept(@dpcode varchar(9))   AS
--树型结构数据,求某结点下的的子树所有结点
  truncate table temp
  truncate table t
  truncate table tt
  truncate table new
  insert into temp select *  from dpet    --数据临时存放表
  insert into t  select * from temp where dpcode_p=@dpcode  --中间临时表
  insert into new  select * from t  --结果临时表
  while (exists(select * from t where dpcode in (select dpcode_p from temp)))
    --当某层的结点全为叶子时,才停止循环
    begin
      insert into tt select * from t --中间交换临时表
      truncate table t
      insert into t select * from temp where dpcode_p in
        (select dpcode from tt)
      truncate table tt
      insert into new select * from t
    end
  insert into new select * from temp where dpcode=@dpcode
GO
分享到:
评论

相关推荐

    java递归树型结构通用数据库

    Java递归树型结构通用数据库是指使用Java语言实现的递归树型结构数据库系统,该系统可以实现树型结构的部门管理,包括部门的添加、删除、修改和查询等操作。 知识点: 1. 递归树型结构数据库设计 在Java递归树型...

    Delphi中数据库关联树型结构生成与同步数据维护.zip_数据同步_数据库关联_数据维护_树型结构生成

    在Delphi编程环境中,数据库关联树型结构的生成与同步数据维护是开发高效数据库应用程序的重要环节。本资料主要探讨了如何在Windows XP操作系统下,利用Delphi 7进行相关操作。 首先,我们要理解数据库关联的概念。...

    浅谈T-SQL语言之递归查询.pdf

    T-SQL语言中的递归查询是数据库编程中的一个重要功能,它允许开发者执行针对层级或树型结构数据的复杂查询,如组织架构、产品分类、家族族谱等。在传统的SQL Server 2000中,处理这种层级数据通常采用视图、临时表或...

    一种基于Ajax的动态树型结构的设计与实现.pdf

    ### 一种基于Ajax的动态树型结构的设计与实现 #### 摘要 本文提出了一种新型的动态树型结构的实现方案,该方案利用了Yahoo用户界面库和Ajax(异步JavaScript和XML)技术。这种方法能够构建出结构清晰、具有良好...

    网页树型结构快速加载大数据量数据的实现

    构数据的快速加载方法, 通过一种改进的基于广度优先的算法, 将树型数据按照一定的层次和需要, 分散地加载于树型结构上, 从 而较好地解决了大数量的树型数据在网页上树型结构加载时效率低下、延迟较长的问题。该方法...

    如何展开存储在数据库中的树形数据结构.pdf

    本文介绍的三种遍历树形数据结构的方法,包括直接使用主语言支持的递归算法、使用SQL Server的存储过程以及以临时表作为堆栈的方法,分别针对不同的应用场景和需求提供了有效的解决方案。 首先,树形数据结构(Tree...

    树型结构算法

    树型结构算法树型结构算法树型结构算法树型结构算法

    基于Ajax技术的树型结构目录的实现

    ### 基于Ajax技术的树型结构目录的实现 #### 摘要与背景介绍 随着互联网技术的快速发展,树型结构作为一种重要的数据组织形式,其应用范围日益扩大。从传统的文件系统到复杂的数据库索引,乃至现代的网页导航栏...

    jb+数据库+三级树型菜单

    数据库是存储和管理数据的系统,这里可能是指关系型数据库管理系统(RDBMS),如MySQL、Oracle或SQL Server等。数据库与Java结合,可以通过JDBC(Java Database Connectivity)API来实现。JDBC提供了一种标准接口,...

    使用冗余数据设计树型关系的数据结构.pdf

    不过,可以基于标题所提示的主题“使用冗余数据设计树型关系的数据结构”来构建相关知识点。 冗余数据是数据库设计中的一个常见概念,指的是在数据存储时故意存储超出实际需要的数据。这样做可以增加数据库的查询...

    JSP实现树型结构TREE

    MySQL是开源的关系型数据库管理系统,用于存储和管理树型结构的数据。开发者可能通过SQL语句查询数据库,获取需要展示的层次数据,然后将这些数据转换为JSON格式进行传输。 在学习这个例子时,你可以关注以下几个...

    递归法读取数据库树型结构示例

    在IT领域,数据库通常用于存储和管理大量有组织的数据,而树型结构是数据库中一种常见且有效的数据表示形式。这种结构模拟了现实世界中事物的层级关系,非常适合用来表示目录、组织架构、文件系统等。本文将深入探讨...

    树型控件,实现数据库读取数据到树型控件,并且右键实现添加、修改、删除功能

    本文将深入探讨如何实现一个树型控件,通过从数据库中读取数据并显示,同时提供右键菜单来实现添加、修改和删除功能。 树型控件是一种常见的UI组件,它以层次结构展示数据,类似于文件系统的目录结构。在Windows...

    树型数据结构中递归算法的实现.pdf

    树型数据结构是计算机科学中的一种基本数据结构,它以递归的方式模拟了自然界中树木的结构,以节点为基本元素构成,节点间具有明确的父子关系。在树型结构中,递归算法的应用广泛且重要,它通过函数自我调用的方式,...

    基于AJAX技术的动态树型结构的设计与实现.pdf

    在科研管理系统中,基于AJAX技术的动态树型结构可以实现实时更新数据和交互性强的用户界面,提高了系统的响应速度和用户体验。同时,AJAX技术也可以降低服务器的负载,提高系统的可扩展性和可维护性。 本文还对科研...

    树型数据结构在铁路车站信号计算机联锁系统中的应用.pdf

    在探讨“树型数据结构在铁路车站信号计算机联锁系统中的应用”这一主题时,我们首先需要了解树型数据结构的基本概念以及在铁路车站信号系统中的应用场景。树型数据结构是一类非线性数据结构,它的每一个节点可以有两...

    用SQL形成父子结点树结构的妙法.pdf

    在数据库管理中,树型结构是一种常见的数据组织方式,尤其在需要表达层级关系的场景下,如企业组织结构、网站导航结构、分类目录等。树型结构的数据库实现通常依赖于每个节点记录其父节点的引用(或称为指针),这样...

    网页树型结构快速加载大数据量数据的实现.

    在Web应用中,树型结构常用于表示多层次的数据关系,如文件系统、组织架构图、产品分类等。当数据量庞大时,如何高效地加载和渲染这些树型结构成为了一个挑战。 #### 二、关键技术和策略 1. **虚拟滚动技术**:...

    基于JDOM的XML技术用于“树型”数据结构的研究.pdf

    1. 树型数据结构在传统数据库系统中的局限性:在关系数据库中,如果要存储类似树型的数据结构,将需要创建多个二维表来代表各个节点之间的关系,这会导致系统维护复杂度上升,查询效率降低,且在修改如名称等字段时...

Global site tag (gtag.js) - Google Analytics