这个用的是函数,希望对你用.有一个表名为:T
结构如下:
id ---int
parentid---int 上层的父节点
sname--varchar(50) 如有以下数据:
id parentid sname
1 -1 根节点
2 1 节点1
3 1 节点2
4 2 节点3
5 2 节点4
6 3 节点5
7 3 节点6
7 6 节点7 假如:我要得到某个节点下所有的最底层的节点数据怎么实现:
如:我要得到id=3 的所有最底层的数据是:
id parentid sname
7 3 节点6
7 6 节点7
请大家多多帮忙,谢谢! create table tb(id int, parentid int, sname varchar(10))
insert into tb values(1 , -1 , '根节点')
insert into tb values(2 , 1 , '节点1')
insert into tb values(3 , 1 , '节点2')
insert into tb values(4 , 2 , '节点3')
insert into tb values(5 , 2 , '节点4')
insert into tb values(6 , 3 , '节点5')
insert into tb values(7 , 3 , '节点6')
insert into tb values(7 , 6 , '节点7')
go--查询指定节点及其所有子节点的函数
CREATE FUNCTION f_Cid(@ID int) RETURNS @t_Level TABLE(ID int,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.parentid=b.ID
AND b.Level=@Level-1
END
RETURN
END
GO SELECT distinct a.* FROM tb a,f_Cid(3) b WHERE a.ID=b.ID and a.id not in(select parentid from tb)drop table tb
drop function dbo.f_cid/*
id parentid sname
----------- ----------- ----------
7 3 节点6
7 6 节点7(所影响的行数为 2 行)
*/
--2005
create table tb(id int, parentid int, sname nvarchar(10))
insert into tb values(1 , -1 , N'根节点')
insert into tb values(2 , 1 , N'节点1')
insert into tb values(3 , 1 , N'节点2')
insert into tb values(4 , 2 , N'节点3')
insert into tb values(5 , 2 , N'节点4')
insert into tb values(6 , 3 , N'节点5')
insert into tb values(7 , 3 , N'节点6')
insert into tb values(7 , 6 , N'节点7')
go;WITH
TREE AS(
SELECT * FROM TB
WHERE parentid = 3 -- 要查询的父 id
UNION ALL
SELECT TB.* FROM TB, TREE
WHERE TB.parentid = TREE.id
)
SELECT * FROM TREEdrop table tb
结构如下:
id ---int
parentid---int 上层的父节点
sname--varchar(50) 如有以下数据:
id parentid sname
1 -1 根节点
2 1 节点1
3 1 节点2
4 2 节点3
5 2 节点4
6 3 节点5
7 3 节点6
7 6 节点7 假如:我要得到某个节点下所有的最底层的节点数据怎么实现:
如:我要得到id=3 的所有最底层的数据是:
id parentid sname
7 3 节点6
7 6 节点7
请大家多多帮忙,谢谢! create table tb(id int, parentid int, sname varchar(10))
insert into tb values(1 , -1 , '根节点')
insert into tb values(2 , 1 , '节点1')
insert into tb values(3 , 1 , '节点2')
insert into tb values(4 , 2 , '节点3')
insert into tb values(5 , 2 , '节点4')
insert into tb values(6 , 3 , '节点5')
insert into tb values(7 , 3 , '节点6')
insert into tb values(7 , 6 , '节点7')
go--查询指定节点及其所有子节点的函数
CREATE FUNCTION f_Cid(@ID int) RETURNS @t_Level TABLE(ID int,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.parentid=b.ID
AND b.Level=@Level-1
END
RETURN
END
GO SELECT distinct a.* FROM tb a,f_Cid(3) b WHERE a.ID=b.ID and a.id not in(select parentid from tb)drop table tb
drop function dbo.f_cid/*
id parentid sname
----------- ----------- ----------
7 3 节点6
7 6 节点7(所影响的行数为 2 行)
*/
--2005
create table tb(id int, parentid int, sname nvarchar(10))
insert into tb values(1 , -1 , N'根节点')
insert into tb values(2 , 1 , N'节点1')
insert into tb values(3 , 1 , N'节点2')
insert into tb values(4 , 2 , N'节点3')
insert into tb values(5 , 2 , N'节点4')
insert into tb values(6 , 3 , N'节点5')
insert into tb values(7 , 3 , N'节点6')
insert into tb values(7 , 6 , N'节点7')
go;WITH
TREE AS(
SELECT * FROM TB
WHERE parentid = 3 -- 要查询的父 id
UNION ALL
SELECT TB.* FROM TB, TREE
WHERE TB.parentid = TREE.id
)
SELECT * FROM TREEdrop table tb
解决方案 »
- 请帮看下如下sql测试代码是想达到什么测试目的,最好帮解释下代码,谢谢
- 求一SQL
- 如何实现自动增加
- 如何让管理中的sql server代理随着sql server的启动而启动
- 帮我看看这条SQL语句问题在哪?在线等!!!
- 工资管理软件,要实现工资项目的可变如何做?
- 在Oracle中,怎么获得一个员工的年龄?也就是当前年份减去出生日期,比较着急的,
- 老大些,我给分,救命啊!!!!!!!!!!!!!!!!!
- 怎么进行此种模糊查询--如:在一数据库中查询包含有“张三”的记录,要求不指定字段名,即搜索库中包含有这个字符串的记录。
- Access竟然和SQL Server冲突!
- 请教~~一个棘手的问题,连接SQL SERVER失败!
- 又一疑难问题(关于触发器)
这样,它显示的数据除了11个地市之外,还包括一条河北省的数据,这条数据如何过滤掉呢?============================================================================
这时,只要将父的 MemberWithDate 设置成为NonLeafDataHidden 再部署即可.
陈老板都来了,哈哈,我上段时间初学MDX的时候,经常去你的博客,那时候还啥都不懂,就没好意思问问题,呵呵。你出马这问题铁定能解决。谢谢了,Ps: 那么时间维度取的话,是不是也应该这么设置,我从时间维度的粒度为(月)向下钻取时,取的是[DATE].[MONTH OF YEAR].MEMBERS 这样取得的数据除包含一个月31天的数据之外 还有一条 Day Of Month 为 All的数据,这个应该怎么过滤呢?