天天SQL(查询所有子节点及其函数的练习)
2009-06-22 19:52
519 查看
------tb
create table tb(id varchar(3) , pid varchar(3) , name varchar(10))
insert into tb values('001' , null , '河南省')
insert into tb values('002' , '001' , '洛阳市')
insert into tb values('003' , '001' , '郑州市')
insert into tb values('004' , '002' , '老城区')
insert into tb values('005' , '003' , '二七区')
insert into tb values('006' , '003' , '金水区')
insert into tb values('007' , '003' , '惠济区')
insert into tb values('008' , '007' , 'A镇')
insert into tb values('009' , '007' , 'B镇')
insert into tb values('010' , '007' , 'C镇')
--查询指定节点及其所有子节点的函数 f_cid
create function f_cid(@ID varchar(3)) returns @t_level table(id varchar(3) , level int)
as
begin
declare @level int
set @level = 1
insert into @t_level select @ID , @level
while @@ROWCOUNT > 0
begin
set @level = @level + 1
insert into @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
select * from tb
--调用函数查询001(河南省)及其所有子节点
select a.* from tb a , f_cid('001') b where a.id = b.id order by a.id
--调用函数查询002(洛阳市)及其所有子节点
select a.* from tb a , f_cid('002') b where a.id = b.id order by a.id
--调用函数查询003(郑州市)及其所有子节点
select a.* from tb a , f_cid('003') b where a.id = b.id order by a.id
---------结果显示依次如下
id pid name
---- ---- ----------
001 NULL 河南省
002 001 洛阳市
003 001 郑州市
004 002 老城区
005 003 二七区
006 003 金水区
007 003 惠济区
008 007 A镇
009 007 B镇
010 007 C镇
(10 行受影响)
id pid name
---- ---- ----------
001 NULL 河南省
002 001 洛阳市
003 001 郑州市
004 002 老城区
005 003 二七区
006 003 金水区
007 003 惠济区
008 007 A镇
009 007 B镇
010 007 C镇
(10 行受影响)
id pid name
---- ---- ----------
002 001 洛阳市
004 002 老城区
(2 行受影响)
id pid name
---- ---- ----------
003 001 郑州市
005 003 二七区
006 003 金水区
007 003 惠济区
008 007 A镇
009 007 B镇
010 007 C镇
(7 行受影响)
--销毁
drop table tb
drop function f_cid
create table tb(id varchar(3) , pid varchar(3) , name varchar(10))
insert into tb values('001' , null , '河南省')
insert into tb values('002' , '001' , '洛阳市')
insert into tb values('003' , '001' , '郑州市')
insert into tb values('004' , '002' , '老城区')
insert into tb values('005' , '003' , '二七区')
insert into tb values('006' , '003' , '金水区')
insert into tb values('007' , '003' , '惠济区')
insert into tb values('008' , '007' , 'A镇')
insert into tb values('009' , '007' , 'B镇')
insert into tb values('010' , '007' , 'C镇')
--查询指定节点及其所有子节点的函数 f_cid
create function f_cid(@ID varchar(3)) returns @t_level table(id varchar(3) , level int)
as
begin
declare @level int
set @level = 1
insert into @t_level select @ID , @level
while @@ROWCOUNT > 0
begin
set @level = @level + 1
insert into @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
select * from tb
--调用函数查询001(河南省)及其所有子节点
select a.* from tb a , f_cid('001') b where a.id = b.id order by a.id
--调用函数查询002(洛阳市)及其所有子节点
select a.* from tb a , f_cid('002') b where a.id = b.id order by a.id
--调用函数查询003(郑州市)及其所有子节点
select a.* from tb a , f_cid('003') b where a.id = b.id order by a.id
---------结果显示依次如下
id pid name
---- ---- ----------
001 NULL 河南省
002 001 洛阳市
003 001 郑州市
004 002 老城区
005 003 二七区
006 003 金水区
007 003 惠济区
008 007 A镇
009 007 B镇
010 007 C镇
(10 行受影响)
id pid name
---- ---- ----------
001 NULL 河南省
002 001 洛阳市
003 001 郑州市
004 002 老城区
005 003 二七区
006 003 金水区
007 003 惠济区
008 007 A镇
009 007 B镇
010 007 C镇
(10 行受影响)
id pid name
---- ---- ----------
002 001 洛阳市
004 002 老城区
(2 行受影响)
id pid name
---- ---- ----------
003 001 郑州市
005 003 二七区
006 003 金水区
007 003 惠济区
008 007 A镇
009 007 B镇
010 007 C镇
(7 行受影响)
--销毁
drop table tb
drop function f_cid
相关文章推荐
- 【SQL精彩语句】SQL SERVER 2000中查询指定节点及其所有子节点的函数(表格形式显示)
- MSSQL 查询所有节点及其所有子节点的函数
- 查询指定节点及其所有子节点的函数
- SQL---查询树中某个节点及其所有子节点
- 你真的会玩SQL吗?查询指定节点及其所有父节点的方法
- SQL SERVER 2000中查询指定节点及其所有子节点的函数
- 查询指定节点及其所有子节点的函数
- 【SQL精彩语句】SQL SERVER 2005中查询指定节点及其所有子节点的方法(表格形式显示)
- MyBatis--关联关系查询--自关联--一对多--查询指定父节点及其所有子
- SQL - 根据父节点查询所有子节点
- SQL 自定义函数获得树型结构下的所有子孙节点
- SQL查询--列出所有员工的姓名及其直接上级的姓名
- MyBatis--关联关系查询--自关联--多对一--查询指定节点及其所有父节点
- sql工具:一条sql语句,查询sql server某个指定表的所有列及其属性
- 查询指定节点及其所有子节点的方法
- SQL SERVER 2005中查询指定节点及其所有父节点的方法
- sql工具:一条sql语句,查询sql server某个指定表的所有列及其属性
- 查询指定节点及其所有父节点的方法
- Transact-SQL 示例 - 查询某个数据库内的所有表的记录行数及其总和
- 查找指定节点的所有子节点的示例函数.sql