以公司的网站栏目表为例,表结构(表名:Subject)如下:
字段名称 字段类型 字段长度
id int 4
NAME varchar 200
PARENTID int 4
CODE varchar 100
在数据库中创建一个自定义函数:
CREATE FUNCTION dbo.GetSubtreeInfo
( @manager_id AS char(5)
)
RETURNS @treeinfo table
( [id] [int] NOT NULL ,
[name] [varchar] (100) NOT NULL,
[parentid] [int] NOT NULL,
[varchar] (100) NULL,
[levels] [int] NOT NULL
) AS
BEGIN
DECLARE @level AS int
SELECT @level = 0
INSERT INTO @treeinfo
SELECT [id], [name], [parentid], , @level
FROM [subject]
WHERE [id] = @manager_id
WHILE @@ROWCOUNT > 0
BEGIN
SET @level = @level + 1
INSERT INTO @treeinfo
SELECT E.[id], E.[name], E.[parentid], E., @level
FROM [subject] AS E JOIN @treeinfo AS T
ON E.[parentid] = T.[id] AND T.[levels] = @level - 1
END
RETURN
END
说明:其中的levels是树状结构的级数
使用方法:select SPACE(levels*3)+name ,* from GetSubtreeInfo(973) 其中973可以修改为你要开始查询的起始节点
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/david286/archive/2007/04/27/1587411.aspx
--不包含根节点
declare @Id int
set @Id = 68; ---再次修改父节点
With RootNodeCTE(Id,fatherid,cname)
As (Select categoryid,fatherid,name From u1club_gdm_category Where fatherid In (@Id)
Union All
Select u1club_gdm_category.categoryid,u1club_gdm_category.fatherid,u1club_gdm_category.name From RootNodeCTE
Inner Join u1club_gdm_category
On RootNodeCTE.Id = u1club_gdm_category.fatherid )
Select * From RootNodeCTE
分享到:
相关推荐
SQL 字符串分割函数实现多行数据转换 在数据库中,经常会遇到将一个字段中的特殊字符分割的字符串转换成多行数据的情况。这是一个常见的需求,但是网上提供的解决方案往往非常复杂,难以理解和实现。为了解决这个...
在SQL Server中,逻辑表达式是构建复杂查询和控制流程的关键元素。它们允许数据库操作根据特定条件执行不同的操作,从而增强了SQL语言的功能性和灵活性。以下是对给定文件中提到的几种涉及逻辑表达式的SQL Server...
最后,我们看到一个名为《非常好用的SQL语句优化34条.txt》的文本文件,这很可能是作者或专家总结的SQL查询优化技巧。这些技巧可能包括避免全表扫描,合理使用索引,优化联接操作,以及利用查询提示和执行计划来提升...
"VC中用DB-Library快速访问SQL Server数据库技术.pdf" 这篇文章主要介绍了使用DB-Library在VC中快速访问SQL Server数据库的技术。DB-Library是微软为SQL Server提供的一套应用程序接口(API),通过这套API可以编写...
他可以支持SQLServer7.0、SQLServer2000和SQLServer2005,提取标准数据库的日志文件或者备份文件中的信息。 其中提供两个强大的工具:日志分析浏览,对象恢复。具体功能如下: l 日志文件浏览 l 数据库变更审查 l...
描述中提到这个工具不能处理"GO"关键字,"GO"在SQL Server中用于分隔一组Transact-SQL语句,可能意味着这个轻量级工具没有完全实现SSMS中的批处理功能。 3. **数据库对象浏览**:用户可以浏览数据库架构,包括表、...
他可以支持SQLServer7.0和SQLServer2000,提取标准数据库的日志文件或者备份文件中的信息。 其中提供两个强大的工具:日志分析浏览,对象恢复。具体功能如下: l 日志文件浏览 l 数据库变更审查 l 计划和授权变更...
在SQL Server 2000中,函数是执行特定计算或操作的重要工具,它们极大地提升了查询和数据处理的效率。本篇文章将详细讲解SQL Server 2000中的一些常用函数,帮助你更好地理解和运用这些功能。 1. **字符串函数**: ...
在实现学生信息管理系统时,我们需要导入对应的JDBC驱动,如`com.microsoft.sqlserver.jdbc.SQLServerDriver`,并使用`DriverManager.getConnection()`方法建立与SQL Server的连接。 3. **SQL Server数据库**: SQL ...
每当执行一条 DML(数据操纵语言)语句时,都会创建一个新的事务,并在语句执行完成后自动提交。 - **显式事务**:通过显式地使用 `BEGIN TRANSACTION`、`COMMIT TRANSACTION` 和 `ROLLBACK TRANSACTION` 来控制事务...
在实际应用中,开发者通常会结合这些基本的SQL语句和Recordset对象的方法来实现数据的增删改查和统计分析。例如,通过`SELECT`语句获取数据,然后使用`Recordset`对象的方法遍历和处理查询结果,实现动态网页的交互...
本文介绍了PowerBuilder在SQLSERVER与ORACLE数据库间数据比对的实现方法,包括PB的简介、PB在数据比对中的应用、Transaction和DataStore概念等内容,为读者提供了一个详细的了解PB在数据比对中的应用的机会。
--高级查询在数据库中用得是最频繁的,也是应用最广泛的。 Ø 基本常用查询 --select select * from student; --all 查询所有 select all sex from student; --distinct 过滤重复 select distinct sex from ...
- **定义:**`datetime`是SQL Server中用于存储日期和时间的数据类型。 - **长度:**`datetime`类型的长度为8字节,用于存储日期和时间信息。 #### 13. 数据表的功能 **知识点解析:** - **表的作用:**数据表是...
变量在SQL Server中用于存储临时数据。全局变量如`@@version`和`@@servername`由系统定义并维护,用户只能读取它们的值。`@@error`是一个示例,它返回最后执行的SQL语句的错误号。如果执行语句时发生错误,可以检查...
SQL Server 电子表是一种在数据库管理系统SQL Server中用于存储、管理和分析数据的表格形式。它提供了高效的数据组织和处理能力,适用于图书管理和学生管理等多种场景。在这个压缩包中,你可能找到了预先构建好的...
他可以支持SQLServer7.0和SQLServer2000,提取标准数据库的日志文件或者备份文件中的信息。 其中提供两个强大的工具:日志分析浏览,对象恢复。具体功能如下: l 日志文件浏览 l 数据库变更审查 l 计划和授权变更...
在VB.NET和SQL Server 2000的高级编程中,创建高效的数据层是至关重要的。数据层是应用程序的核心部分,负责与数据库进行交互,处理数据的存储、检索和更新。这一主题涉及到多个关键技术点,包括但不限于数据库设计...
变量在 SQL 中用于存储临时数据。它们可以是局部变量(由 `@` 开头)或全局变量(使用 `GLOBAL` 关键字声明)。 ```sql DECLARE @local_variable INT; SET @local_variable = 10; ``` 总结以上内容,我们介绍了 SQL...
在数据库实现阶段,T-SQL(Transact-SQL)是SQL Server中用于数据操作的语言。INSERT语句用于添加数据,可以单条插入或批量插入;UPDATE语句用于修改已存在的数据;SELECT语句则用于查询数据,可以根据特定条件筛选...