查询指定节点及其所有子节点的函数
2010-06-22 17:42
381 查看
--测试数据
CREATE TABLE tb(ID char(3),PID char(3),Name nvarchar(10))
INSERT tb SELECT '001',NULL ,'山东省'
UNION ALL SELECT '002','001','烟台市'
UNION ALL SELECT '004','002','招远市'
UNION ALL SELECT '003','001','青岛市'
UNION ALL SELECT '005',NULL ,'四会市'
UNION ALL SELECT '006','005','清远市'
UNION ALL SELECT '007','006','小分市'
GO
--查询指定节点及其所有子节点的函数
CREATE FUNCTION f_Cid(@ID char(3))
RETURNS @t_Level TABLE(ID char(3),Level int)
AS
BEGIN
DECLARE @Level int
SET @Level=1
INSERT @t_Level SELECT @ID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level
FROM tb a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END
RETURN
END
GO
--调用函数查询002及其所有子节点
SELECT a.*
FROM tb a,f_Cid('002') b
WHERE a.ID=b.ID
/*--结果
ID PID Name
------ ------- ----------
002 001 烟台市
004 002 招远市
--*/
CREATE TABLE tb(ID char(3),PID char(3),Name nvarchar(10))
INSERT tb SELECT '001',NULL ,'山东省'
UNION ALL SELECT '002','001','烟台市'
UNION ALL SELECT '004','002','招远市'
UNION ALL SELECT '003','001','青岛市'
UNION ALL SELECT '005',NULL ,'四会市'
UNION ALL SELECT '006','005','清远市'
UNION ALL SELECT '007','006','小分市'
GO
--查询指定节点及其所有子节点的函数
CREATE FUNCTION f_Cid(@ID char(3))
RETURNS @t_Level TABLE(ID char(3),Level int)
AS
BEGIN
DECLARE @Level int
SET @Level=1
INSERT @t_Level SELECT @ID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level
FROM tb a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END
RETURN
END
GO
--调用函数查询002及其所有子节点
SELECT a.*
FROM tb a,f_Cid('002') b
WHERE a.ID=b.ID
/*--结果
ID PID Name
------ ------- ----------
002 001 烟台市
004 002 招远市
--*/
相关文章推荐
- 【SQL精彩语句】SQL SERVER 2000中查询指定节点及其所有子节点的函数(表格形式显示)
- SQL SERVER 2000中查询指定节点及其所有子节点的函数
- 查询指定节点及其所有子节点的函数
- SQL SERVER 2005中查询指定节点及其所有父节点的方法
- MSSQL 查询所有节点及其所有子节点的函数
- 天天SQL(查询所有子节点及其函数的练习)
- 你真的会玩SQL吗?查询指定节点及其所有父节点的方法
- 【SQL精彩语句】SQL SERVER 2005中查询指定节点及其所有子节点的方法(表格形式显示)
- 查询指定节点及其所有父节点的方法
- 查询指定节点及其所有子节点的方法
- MyBatis--关联关系查询--自关联--多对一--查询指定节点及其所有父节点
- BOM之一------------查询指定节点及其所有子节点-------------------
- SQL SERVER 2005中查询指定节点及其所有子节点的方法
- MyBatis--关联关系查询--自关联--一对多--查询指定父节点及其所有子
- sql工具:一条sql语句,查询sql server某个指定表的所有列及其属性
- zTree模糊查询(仅保留符合查询条件节点及其所有父节点)
- mysql查询库中所有的表名,mysql查询指定表中的所有字段名及其相关信息
- SQL SERVER中查找指定节点的所有子节点的示例函数
- QTreeView只显示指定驱动器及其目录,隐藏所有兄弟节点
- sql工具:一条sql语句,查询sql server某个指定表的所有列及其属性