sql 父类下的子类查询的方法,包含父类的信息

如:1桌子02椅子03凳子04大号15中号16小号1查找父类下的子类并且包含父类的信息如要查找桌子的信息格式如下1桌子04大号15中号16小号1请问sql语句如何实现?... 如:
1 桌子 0
2 椅子 0
3 凳子 0
4 大号 1
5 中号 1
6 小号 1
查找父类下的子类并且包含父类的信息 如要查找桌子的信息格式如下
1 桌子 0
4 大号 1
5 中号 1
6 小号 1
请问sql语句如何实现?
展开
 我来答
day忘不掉的痛
2015-08-12 · 知道合伙人数码行家
day忘不掉的痛
知道合伙人数码行家
采纳数:62646 获赞数:223930
本人担任公司网络部总经理多年,有充足的网络经验、互联网相关知识和资讯。

向TA提问 私信TA
展开全部
-查询各节点的父路径函数(从父到子)
create function f_pid1(@id varchar(3)) returns varchar(100)
as
begin
declare @re_str as varchar(100)
set @re_str = ''
select @re_str = name from tb where id = @id
while exists (select 1 from tb where id = @id and pid is not null)
begin
select @id = b.id , @re_str = b.name + ',' + @re_str from tb a , tb b where a.id = @id and a.pid = b.id
end
return @re_str
end
go
--查询各节点的父路径函数(从子到父)
create function f_pid2(@id varchar(3)) returns varchar(100)
as
begin
declare @re_str as varchar(100)
set @re_str = ''
select @re_str = name from tb where id = @id
while exists (select 1 from tb where id = @id and pid is not null)
begin
select @id = b.id , @re_str = @re_str + ',' + b.name from tb a , tb b where a.id = @id and a.pid = b.id
end
return @re_str
end
go

select * ,
dbo.f_pid1(id) [路径(从父到子)] ,
dbo.f_pid2(id) [路径(从子到父)]
from tb order by id

drop function f_pid1 , f_pid2
drop table tb

/*
id pid name 路径(从父到子) 路径(从子到父)
cy_paul
2011-09-23 · TA获得超过821个赞
知道小有建树答主
回答量:769
采纳率:100%
帮助的人:236万
展开全部
declare @t table(编号 varchar(20),名称 varchar(10),数量 int)
insert into @t select '01' ,'桌子' ,0
union select '0101','大号',1
union select '0102','中号',1
union select '0103','小号',1
union select '02','椅子',0
union select '03','凳子',0

select * from @t
--仅查询桌子及其子类的情况
select 编号,名称 , 数量
from @t
where 编号 like '01%'
追问
如果数据很多的话,这样写岂不是很麻烦。有没简单的sql语句
追答
数据有多少?500万条也能瞬间完成。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郏丽珠
2011-09-24 · TA获得超过142个赞
知道答主
回答量:563
采纳率:0%
帮助的人:257万
展开全部
如果在sql sever 2005或以上版本可以这样
with a as(
select id,nodename,pid from 表 where id='05009'
union all
select x.id,a.nodename,a.pid from 表 x,a
where x.pid=a.id)
select * from a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式