在开发中经常会遇到无限级分类的问题,最常见的是一些无限级目录之类的,如果你对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)就可以输入所有记录。
分享到:
相关推荐
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数据库,如MySQL、SQL Server或Oracle等,提供了强大的数据处理能力,可以有效地管理无限级别的树形数据。 首先,我们需要设计一个合适的数据库表结构来存储树形菜单的数据。一种常用的方法是使用自引用关系,即...
当我们谈论“无限级树形菜单”,这通常是指一个可以展示层级结构数据的控件,例如文件系统、组织架构或数据库中的分类数据。在这个场景中,这个压缩包文件提供了使用.NET GUI控件来实现与Sql数据库交互的无限级树形...
- 使用递归或者迭代方法构建树形结构,如`TreeNode`类 - 将构建好的树形结构绑定到控件,如TreeView控件 **5. TreeView控件** - TreeView是ASP.NET中的一个服务器控件,可以用来显示多层的层次结构 - 配置TreeView...
在SQL Server中,实现树形结构递归查询是数据库管理中的常见需求,特别是在处理具有层级关系的数据时,如无限级分类。SQL Server 2005及以后版本引入了公用表表达式(CTE,Common Table Expression)来支持递归查询...
但是,MS SQL Server在当时尚未内置递归查询功能,这意味着在MS SQL Server上实现树形结构表的遍历查询需要采取其他方法。 文章中提出了在MS SQL Server上实现树遍历查询的循环算法。这一算法的提出基于对树遍历...
总的来说,“树形结构实例带数据库”是一个综合性的Delphi项目,涉及到数据可视化、数据库操作和用户交互等多个关键环节。这个实例对于学习如何在Delphi环境下构建一个高效且直观的软硬件管理工具具有很高的参考价值...
本项目“BS实现树形结构(jsp+mysql数据库+设计文档)”提供了一个完整的解决方案,包括源码、开发文档以及SQL Server数据库,方便开发者在MyEclipse环境中直接导入使用。 首先,我们来探讨树形结构在Web开发中的应用...
ASP.NET + SQLServer树形框架是一种常见的Web应用程序开发技术,用于构建层次结构的数据展示和交互。这个Demo展示了如何结合这两种技术来创建一个可扩展、动态的树状视图,这在网站导航、组织结构显示或者文件目录...
在前端展现方面,JavaScript库如jQuery、React、Vue等都有成熟的组件可以方便地渲染树形结构。常见的有`TreeView`组件,它们通常支持异步加载、节点展开/折叠、拖拽排序等功能。同时,前端需要与后端接口配合,通过...
- 使用递归查询(如CTE:Common Table Expression)或自连接来获取树形结构的数据。 4. **动态绑定树**: - 在前端,使用JavaScript或jQuery处理从服务器获取的JSON数据,构建树形结构。 - 常用的JavaScript库,...
在IT领域,树形结构是一种常见的数据组织方式,它模拟了自然界中的树状层次关系,广泛应用于文件系统、数据库索引、计算机科学的算法设计等多个方面。在这个项目中,我们探讨的是如何在Java环境中,利用JSP(Java...
- **层次模型**:数据以树形结构存储,每个节点除了有一个父节点外,还可以有多个子节点。 - **网状模型**:数据以网络结构存储,允许任何节点有多个父节点和子节点。 - **关系模型**:这是最常见的模型,基于二...
在IT领域,特别是数据库设计和前端展示中,"树形结构无限级分类"是一个常见的需求。这个主题涉及到如何在数据库中存储具有层级关系的数据,并在应用程序中以树状形式进行展示。下面我们将深入探讨这个话题。 首先,...
1. **启动企业管理器**:界面类似于Windows资源管理器,左侧的树形结构显示服务器和数据库层次,右侧显示选中对象的详细信息。默认的SQL Server组下包含了服务器实例,可以添加新的SQL Server组或注册新的服务器。 ...
- **递归查询**:使用 WITH 子句可以定义递归查询,特别适用于处理具有层次结构或树形结构的数据。 - **临时表和表变量**:在处理大量数据时,可以使用临时表或表变量来存储中间结果,从而避免多次扫描整个表,提升...
在这个项目中,“BS树形结构(jsp+mysql数据库+设计文档)”是利用Java Web技术,即JSP(JavaServer Pages)和Servlet,以及MySQL数据库来实现的Web应用。下面将详细阐述这个项目的知识点。 1. **B/S架构**:B/S...
* 层次模型:树形结构,数据之间存在父子关系 * 网状模型:网状结构,数据之间存在复杂关系 * 关系模型:表格结构,数据之间存在关系 * E-R 图:实体-关系图,用于描述实体和关系 关系模型 * 关系模型的特点: + ...
"C#_sql_树形列表"指的是如何在C#中将数据库查询结果以树形结构显示出来,这在GUI应用中尤其常见,如文件管理器或组织架构展示。实现这一功能通常涉及递归算法,以及控件如TreeView的使用。每个节点代表数据库中的一...
本文将深入探讨如何使用Delphi编程语言,通过SQL Server数据库,实现动态树形结构的数据查询。这个主题源于一个名为"TreeViewQueryDemo"的示例项目,它演示了如何将用户输入的SQL语句应用于树控件(Tree View)以...