`

SQL Server下无限多级别分类查询解决办法(简单查询树形结构数据库表)

阅读更多

在开发中经常会遇到无限级分类的问题,最常见的是一些无限级目录之类的,如果你对SQL Server还不是太熟悉或者还不太熟悉SQL语言的话,这将是一件很困难的事情,也许你最后能实现类似的功能,不过可能花费的时间很长,效率也不是很理想,下面的示例也许能给你一个启示。

 

CREATE TABLE [dbo].[Tree] (
  [ID] [int] IDENTITY (1, 1) NOT NULL ,
  [PID] [int] NULL ,
 [Name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL 
 ) ON [PRIMARY]
 GO
 
 CREATE  CLUSTERED  INDEX [IX_Tree] ON [dbo].[Tree]([PID]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Tree] WITH NOCHECK ADD 
CONSTRAINT [PK_Tree] PRIMARY KEY  NONCLUSTERED 
 (
     [ID]
 )  ON [PRIMARY] ,
 CONSTRAINT [子ID不能等于父ID] CHECK ([ID] <> [PID])
GO

ALTER TABLE [dbo].[Tree] ADD 
 CONSTRAINT [FK_Tree_Tree] FOREIGN KEY 
 (
 [PID]
 ) REFERENCES [dbo].[Tree] (
  [ID]
 )
GO

/**//****** 对象:  用户定义的函数 dbo.fGetTreeTable  ******/
CREATE FUNCTION dbo.fGetTreeTable
 (
 @ID int= null
 )
RETURNS @Tab TABLE(ID int, PID int, Name varchar(10), Lev int)
AS
 BEGIN
  Declare @lev int
  Set @lev=0
  
  While @lev=0 or @@ROWCount>0
  Begin
   Set @Lev=@Lev+1
   Insert @Tab(ID, PID, Name, Lev)
   Select ID, PID, Name, @Lev From Tree Where (@Lev=1 and ((PID=@ID) or (@ID is null and PID is null))) or (PID in (Select ID From @Tab Where Lev=@Lev-1))
   order by ID
  End
  RETURN
 END

GO

--实际数据
Insert Tree(PID, Name) values(null, 公司)
Insert Tree(PID, Name) values(3, IT)
Insert Tree(PID, Name) values(1, Fin)
Insert Tree(PID, Name) values(5, XZ)
Insert Tree(PID, Name) values(1, HR)
GO

 

 

直接查询Select * from dbo.fGetTreeTable(null)就可以输入所有记录。

分享到:
评论
1 楼 w497480098h 2014-05-08  
学习了 很好谢谢

相关推荐

    SqlServer树形结构、层次查询

    SqlServer树形结构、层次查询 结果如下: 1 1 2 1-2 4 1-2-4 5 1-2-5 10 1-2-5-10 8 1-2-5-8 6 1-2-6 3 1-3 7 1-3-7 11 1-3-7-11 9 1-3-7-9 12 1-3-7-9-12 13 1-3-7-9-13 14 1-3-7-9-14

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

    Sql数据库,如MySQL、SQL Server或Oracle等,提供了强大的数据处理能力,可以有效地管理无限级别的树形数据。 首先,我们需要设计一个合适的数据库表结构来存储树形菜单的数据。一种常用的方法是使用自引用关系,即...

    无限级树形菜单(Sql数据库)_.NET GUI控件.7z

    当我们谈论“无限级树形菜单”,这通常是指一个可以展示层级结构数据的控件,例如文件系统、组织架构或数据库中的分类数据。在这个场景中,这个压缩包文件提供了使用.NET GUI控件来实现与Sql数据库交互的无限级树形...

    VS2005+sql server2000实现无限级树形菜单

    - 使用递归或者迭代方法构建树形结构,如`TreeNode`类 - 将构建好的树形结构绑定到控件,如TreeView控件 **5. TreeView控件** - TreeView是ASP.NET中的一个服务器控件,可以用来显示多层的层次结构 - 配置TreeView...

    sqlserver实现树形结构递归查询(无限极分类)的方法

    在SQL Server中,实现树形结构递归查询是数据库管理中的常见需求,特别是在处理具有层级关系的数据时,如无限级分类。SQL Server 2005及以后版本引入了公用表表达式(CTE,Common Table Expression)来支持递归查询...

    MS SQL Server树形结构表遍历的循环算法.pdf

    但是,MS SQL Server在当时尚未内置递归查询功能,这意味着在MS SQL Server上实现树形结构表的遍历查询需要采取其他方法。 文章中提出了在MS SQL Server上实现树遍历查询的循环算法。这一算法的提出基于对树遍历...

    树形结构实例带数据库

    总的来说,“树形结构实例带数据库”是一个综合性的Delphi项目,涉及到数据可视化、数据库操作和用户交互等多个关键环节。这个实例对于学习如何在Delphi环境下构建一个高效且直观的软硬件管理工具具有很高的参考价值...

    BS实现树形结构(jsp+mysql数据库+设计文档)

    本项目“BS实现树形结构(jsp+mysql数据库+设计文档)”提供了一个完整的解决方案,包括源码、开发文档以及SQL Server数据库,方便开发者在MyEclipse环境中直接导入使用。 首先,我们来探讨树形结构在Web开发中的应用...

    asp.net +SqlServer树形框架

    ASP.NET + SQLServer树形框架是一种常见的Web应用程序开发技术,用于构建层次结构的数据展示和交互。这个Demo展示了如何结合这两种技术来创建一个可扩展、动态的树状视图,这在网站导航、组织结构显示或者文件目录...

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

    在前端展现方面,JavaScript库如jQuery、React、Vue等都有成熟的组件可以方便地渲染树形结构。常见的有`TreeView`组件,它们通常支持异步加载、节点展开/折叠、拖拽排序等功能。同时,前端需要与后端接口配合,通过...

    无限级树形菜单动态绑定树(sql2005数据库+vs)

    - 使用递归查询(如CTE:Common Table Expression)或自连接来获取树形结构的数据。 4. **动态绑定树**: - 在前端,使用JavaScript或jQuery处理从服务器获取的JSON数据,构建树形结构。 - 常用的JavaScript库,...

    树形结构(增删改查刷新等功能附SQL脚本)

    在IT领域,树形结构是一种常见的数据组织方式,它模拟了自然界中的树状层次关系,广泛应用于文件系统、数据库索引、计算机科学的算法设计等多个方面。在这个项目中,我们探讨的是如何在Java环境中,利用JSP(Java...

    SQL SERVER 2000数据库教案

    - **层次模型**:数据以树形结构存储,每个节点除了有一个父节点外,还可以有多个子节点。 - **网状模型**:数据以网络结构存储,允许任何节点有多个父节点和子节点。 - **关系模型**:这是最常见的模型,基于二...

    树形结构无限级分类

    在IT领域,特别是数据库设计和前端展示中,"树形结构无限级分类"是一个常见的需求。这个主题涉及到如何在数据库中存储具有层级关系的数据,并在应用程序中以树状形式进行展示。下面我们将深入探讨这个话题。 首先,...

    sql server 2000数据库教程

    1. **启动企业管理器**:界面类似于Windows资源管理器,左侧的树形结构显示服务器和数据库层次,右侧显示选中对象的详细信息。默认的SQL Server组下包含了服务器实例,可以添加新的SQL Server组或注册新的服务器。 ...

    SQLServer数据库设计和高级查询10

    - **递归查询**:使用 WITH 子句可以定义递归查询,特别适用于处理具有层次结构或树形结构的数据。 - **临时表和表变量**:在处理大量数据时,可以使用临时表或表变量来存储中间结果,从而避免多次扫描整个表,提升...

    BS树形结构(jsp+mysql数据库+设计文档)

    在这个项目中,“BS树形结构(jsp+mysql数据库+设计文档)”是利用Java Web技术,即JSP(JavaServer Pages)和Servlet,以及MySQL数据库来实现的Web应用。下面将详细阐述这个项目的知识点。 1. **B/S架构**:B/S...

    SQL Server数据库 期末考试重点 超详细.docx

    * 层次模型:树形结构,数据之间存在父子关系 * 网状模型:网状结构,数据之间存在复杂关系 * 关系模型:表格结构,数据之间存在关系 * E-R 图:实体-关系图,用于描述实体和关系 关系模型 * 关系模型的特点: + ...

    CSharp-SQL.rar_C# sql 查询 txt_C#不让sql换行_c# SQL 树形列表_c# sqlserver操

    "C#_sql_树形列表"指的是如何在C#中将数据库查询结果以树形结构显示出来,这在GUI应用中尤其常见,如文件管理器或组织架构展示。实现这一功能通常涉及递归算法,以及控件如TreeView的使用。每个节点代表数据库中的一...

    Delphi通过SQL Server的动态树的数据查询.rar

    本文将深入探讨如何使用Delphi编程语言,通过SQL Server数据库,实现动态树形结构的数据查询。这个主题源于一个名为"TreeViewQueryDemo"的示例项目,它演示了如何将用户输入的SQL语句应用于树控件(Tree View)以...

Global site tag (gtag.js) - Google Analytics