`
bigfirebird
  • 浏览: 125137 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何在Sql Server 2000中用一条语句实现树的查询

阅读更多
以公司的网站栏目表为例,表结构(表名: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 语句 将一个表中用特殊字符分割的字段转换成多行数据.docx

    找了网上很多资料,都没有详细的做法有的还很复杂,自己写了个分割函数,通过直接查询就能分割多行,很方便。

    SQL Server数据库实验_数据查询与更新_简单的单表查询.doc

    安装有SQL SERVER 2000的计算机。 四、实验示例 1.查找表中所有姓刘的职工的工号,姓名,部门,薪水 2.查找所有定单金额高于20000的所有客户编号 3.查找业务部或会计部的女员工的基本信息。 4.选取编号界于‘C...

    Log Explorer for SQL Server v4.22 含注册机

    他可以支持SQLServer7.0、SQLServer2000和SQLServer2005,提取标准数据库的日志文件或者备份文件中的信息。 其中提供两个强大的工具:日志分析浏览,对象恢复。具体功能如下: l 日志文件浏览 l 数据库变更审查 l...

    T-SQL高级查询

    --高级查询在数据库中用得是最频繁的,也是应用最广泛的。 Ø 基本常用查询 --select select * from student; --all 查询所有 select all sex from student; --distinct 过滤重复 select distinct sex from ...

    sql2000 Log Explorer4.2(含注册码)+汉化

    他可以支持SQLServer7.0和SQLServer2000,提取标准数据库的日志文件或者备份文件中的信息。 其中提供两个强大的工具:日志分析浏览,对象恢复。具体功能如下: l 日志文件浏览 l 数据库变更审查 l 计划和授权变更...

    Log Explorer for SQL Server v4.22

    他可以支持SQLServer7.0和SQLServer2000,提取标准数据库的日志文件或者备份文件中的信息。 其中提供两个强大的工具:日志分析浏览,对象恢复。具体功能如下: l 日志文件浏览 l 数据库变更审查 l 计划和授权变更...

    数据库原理实验报告整合

    在SQL Server中创建数据库的方法主要有两种:一是在SQL Server Management Studio窗口中使用可视化界面,通过方便的图形化向导创建,二是通过执行Transact-SQL语句创建。 (一)向导方式创建 1、从“开始”菜单选择...

    数据库系统实验指导及内容二.docx

    进一步掌握SQLServer查询分析器的使用,加深对SQL语言的嵌套查询语句的理解。二.实验准备 1.了解SELECT语句的GROUPBY和ORDERBY子句的作用。2.了解统计函数和分组统计函数的使用方法。3.熟悉查询分析器的运行环境。...

    Log Explorer4.2帮助文档

    他可以支持SQLServer7.0和SQLServer2000,提取标准数据库的日志文件或者备份文件中的信息。 其中提供两个强大的工具:日志分析浏览,对象恢复。具体功能如下: l 日志文件浏览 l 数据库变更审查 l 计划和授权变更...

    asp.net知识库

    在Framework1.0下同时连接SqlServer和Oracle的一些体会 XML XPath XPath最通俗的教程(ZZ) XPath中相对路径和绝对路径 XPath 简单语法 Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个...

    C#编程经验技巧宝典

    79 <br>0115 如何判断是否为数字 79 <br>0116 如何在字符串中查找指定字符 79 <br>0117 如何在字符串中用一子串替换另一子串 80 <br>0118 将新字符串添加到已有字符串中 80 <br>0119 如何在...

    mysql数据库的基本操作语法

    foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据 check:检查,指定一个表达式,用于检验指定数据 MySQL不支持check约束,但可以使用check约束,而没有任何效果; 根据约束数据列限制,约束...

    最新Java面试宝典pdf版

    8.用一条SQL语句 查询出每门课都大于80分的学生姓名 100 9.所有部门之间的比赛组合 100 10.每个月份的发生额都比101科目多的科目 101 11.统计每年每月的信息 102 12.显示文章标题,发帖人、最后回复时间 103 13.删除...

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    Java面试宝典2010版

    8.用一条SQL语句 查询出每门课都大于80分的学生姓名 9.所有部门之间的比赛组合 10.每个月份的发生额都比101科目多的科目 11.统计每年每月的信息 12.显示文章标题,发帖人、最后回复时间 13.删除除了id号不同,...

    Java面试笔试资料大全

    8.用一条SQL语句 查询出每门课都大于80分的学生姓名 100 9.所有部门之间的比赛组合 100 10.每个月份的发生额都比101科目多的科目 101 11.统计每年每月的信息 102 12.显示文章标题,发帖人、最后回复时间 103 13.删除...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    在一小时内学会 C#(txt版本)

    // 你可以增加这条语句 namespace MyNameSpace { class HelloWorld { static void Main(string[] args) { AnotherClass obj = new AnotherClass(); obj.Func(); } } } 在 .NET 库中,System 是包含其他命名...

Global site tag (gtag.js) - Google Analytics