`
luck332
  • 浏览: 86266 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

sql树型应用总结

阅读更多

--测试数据
if object_id('[T]') is not null drop table [T]
create table [T] (ID int,PID int,NAME varchar(10))
insert into [T]
select 1,0,'A' union all
select 2,1,'B' union all
select 3,2,'C' union all
select 4,0,'D' union all
select 5,4,'E' union all
select 6,2,'F' union all
select 7,3,'G' union all
select 8,7,'H'
go

--获取所有的要根结点
select t.* from T t where exists (select 1 from T s where s.pid = t.id)
go

--获取所有的叶子结点
select t.* from T t where not exists (select 1 from T s where s.pid = t.id)
go

--获取树型记录的全路径

if object_id('[dbo].[getALLPath]') is not null
drop function [dbo].[getALLPath]
go
create function getALLPath()
returns @t table(id int,pid int,name varchar(50),path varchar(300))
as
begin
insert into @t select id,pid,name,null as path from T
update @t set path=name
DECLARE @i int,@j int
set @i=0
set @j=1
select @i=max(pid) from @t
while @j<=@i
begin
update v set path=a.path+'.'+v.name
from @t v inner join @t a on v.pid=a.id
where v.pid=@j
set @j=@j+1
end
return
end
go

select * from getALLPath()
go

--获取树型记录的全路径
if object_id('[dbo].[getpath]') is not null
drop function [dbo].[getpath]
go
create function getpath(@id varchar(20))
returns varchar(300)
as
begin
declare @s varchar(300)
select @s = name,@id = pid from T where id = @id
while exists (select 1 from T where id = @id )
select @s = name+'.'+@s,@id = pid from T where id = @id
return @s
end
go

select t.*,dbo.getpath(cast(id as varchar(20))) path from T
go

--查找树
if object_id('[dbo].[GetChild]') is not null
drop function [dbo].[GetChild]
go
create function GetChild(@id int)
returns @returnT table(pid int,id int,name varchar(50))
AS
begin
insert into @returnT select pid,id,name from T where id=@id
insert into @returnT select pid,id,name from T where pid=@id
while @@rowcount>0
insert into @returnT select A.pid,A.id,A.name
from T A inner join @returnT B on A.pid=B.id
where A.id not in(select id from @returnT)
return
end
go

select * from GetChild(1)
go

--查找树型记录的全路径
if object_id('[dbo].[getFindPath]') is not null
drop function [dbo].[getFindPath]
go
create function getFindPath(@parentId varchar(20))
returns @returndepartment table(id int,pid int,name varchar(50),path varchar(300))
as
begin
declare @t table(id int,pid int,name varchar(50),path varchar(300))
insert into @t select id,pid,name,null as path from T
update @t set path=name
DECLARE @i int,@j int
set @i=0
set @j=1
select @i=max(pid) from @t
while @j<=@i
begin
update v set path=a.path+'.'+v.name
from @t v inner join @t a on v.pid=a.id
where v.pid=@j
set @j=@j+1
end
insert into @returndepartment select * from @t where id=@parentId
insert into @returndepartment select * from @t where pid=@parentId
while @@rowcount>0
insert into @returndepartment select a.id,a.pid,a.name,a.path
from @t A inner join @returndepartment B on A.pid=B.id
where A.id not in(select id from @returndepartment)
return
end
go

select * from getFindPath(1)
go

分享到:
评论

相关推荐

    ASP.NET树型控件应用

    在本文中,我们将深入探讨如何在ASP.NET中应用树型控件,并结合数据库实现数据的动态绑定。 首先,理解ASP.NET树型控件的基础。TreeView控件是一种服务器控件,它可以展示多级节点,每个节点可以有子节点,形成一个...

    无限级树形菜单(Sql数据库)

    在IT领域,尤其是在Web开发中,无限级树形菜单是一种常见的数据结构,它用于构建具有层级关系的...这个主题涵盖了数据库设计、SQL查询技巧、后端编程以及前端开发等多个IT领域的知识,对于开发复杂的Web应用尤其重要。

    易语言数据库填充到树型框例程

    总结起来,“易语言数据库填充到树型框例程”是一个实用的编程示例,它展示了如何在易语言环境中,将数据库中的复杂数据结构有效地展示在用户界面上,提供了良好的用户体验。通过学习和理解这个例程,开发者可以提升...

    ODBC方式填充树型框.rar

    ODBC(Open Database Connectivity)是微软...总结,使用ODBC方式填充树型框涉及到数据库连接、SQL查询、结果集处理、树型控件操作等多个步骤。理解这些知识点,能帮助开发者高效地将数据库数据以层次结构展示给用户。

    坏孩子无限级树型菜单

    总结起来,"坏孩子无限级树型菜单"是一个结合了前端JS交互和后端ASP.NET数据库操作的实例,提供了在Web应用中创建和管理无限级树形菜单的解决方案。通过学习和理解这一案例,开发者可以掌握如何在实际项目中实现类似...

    PHPwind 5.3树型版本

    总结来说,PHPwind 5.3树型版本通过优化的树型结构、强大的后台管理、丰富的互动功能以及完善的插件系统,为用户打造了一个高效、易用、可拓展的社区论坛平台。这一版本在提高用户体验的同时,也为管理员提供了便捷...

    树型目录ASP+ACESS

    总结来说,"树型目录ASP+ACESS"是基于经典Web技术的文件管理系统实现,它融合了服务器端脚本、关系型数据库和前端交互设计。尽管现代Web开发有更多先进的工具和框架,但理解这一技术有助于我们了解Web开发的历史和...

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

    在IT行业中,数据库管理和数据展示是至关...总结来说,“jb+数据库+三级树型菜单”涉及了Java编程、数据库设计、JDBC、用户界面开发等多个IT领域的知识。掌握这些技能对于开发高效且用户友好的数据管理应用至关重要。

    asp 用WEB方式写成的树型菜单

    总结来说,ASP实现的树型菜单涉及数据获取、递归编程、HTML/CSS布局以及JavaScript交互等多个方面。开发者需要对这些技术有深入理解,并能够结合具体需求进行灵活应用。通过学习和实践,可以创建出功能强大、用户...

    填充数据库到树型框(模块+例程).rar

    总结起来,"填充数据库到树型框(模块+例程)"涵盖了数据库操作、数据结构转换、UI控件使用、事件处理以及模块化编程等多个重要知识点。理解并掌握这些技能,对于开发高效、用户友好的数据驱动应用程序至关重要。

    ODBC方式填充树型框.zip易语言程序源码资源下载

    总结起来,"ODBC方式填充树型框.zip"的易语言程序源码是一个宝贵的教育资源,它不仅教授了如何利用ODBC与数据库交互,还展示了如何在图形界面中呈现数据,对编程学习者和开发者都有很高的学习和参考价值。

    无限级树型菜单

    总结来说,实现ASP.NET中的无限级树型菜单涉及到了数据结构、控件使用、数据绑定、递归编程、自定义模板、动态加载、事件处理以及客户端增强等多个方面的知识。掌握这些技能可以帮助开发者构建出高效、易用且功能...

    android树型结构,

    总结来说,Android中的树型结构实现涉及创建递归数据模型,从SQLite数据库读取数据,使用Gson库将数据转换为对象,以及通过广播在组件间传递数据。理解并熟练掌握这些技术对于构建复杂的Android应用至关重要。

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

    总结起来,实现“递归法读取数据库树型结构”涉及数据库查询、递归算法、数据结构操作和用户界面控件的使用。通过这种方式,我们可以高效地处理和展示数据库中的层次数据,提供直观的用户体验。在实际项目中,可以...

    asp树型浏览专业

    此外,配置文件web.config中修改了部分,添加了数据库连接字符串,这样应用程序就能连接到指定的数据库。在实际开发中,通常会将敏感信息如数据库连接字符串存储在配置文件中,而不是硬编码在源代码里,这样便于管理...

    asp实现树型结构

    本文将详细介绍如何使用ASP(Active Server Pages)来实现一个简单的树型结构,并通过SQL Server数据库进行数据存储与读取。 #### 二、数据库设计 首先,我们需要创建一个数据库表来存储树型结构所需的数据。示例...

    Struts2动态树型从数据库取出

    ### 四、总结 本文详细介绍了如何在Struts2框架中实现动态树型结构的构建,包括后端代码的设计与实现、前端页面的布局与交互逻辑。通过这些技术点的学习,开发者可以更好地理解和应用Struts2框架来开发具有复杂数据...

    使用SQLSERVER 2005/2008 递归CTE查询树型结构的方法

    总结来说,SQL Server 2005/2008的递归CTE是一个强大的工具,它能有效地处理树型结构数据的查询,帮助我们构建和理解复杂的层次关系。通过本文中的Family Tree实例,我们了解了如何定义递归CTE,以及如何使用它来...

    用SQL实现树的查询

    这种结构在现实世界中有许多应用,如家谱、组织结构图等。在数据库管理中,尤其是在关系型数据库中处理具有树形结构的数据是一项挑战。尽管关系型数据库主要处理线性结构的数据(即通过表格形式组织),但在某些情况...

    Asp.net下动态树型界面的实现

    总结来说,ASP.NET中的TreeView控件为开发动态树型界面提供了便利。通过合理地使用数据源、数据绑定、事件处理和样式设置,我们可以构建出功能强大、用户友好的教学资源展示系统。在实际项目中,应根据具体需求和...

Global site tag (gtag.js) - Google Analytics