sql根据子节点查出所有的父节点的 100

select*from(select*fromgqgx_company_levellnwhereln.company_level_namelike'%EMS%')t2这里... select *
from (select *
from gqgx_company_level ln
where ln.company_level_name like '%EMS%') t2
这里面能查出10条不同层的数据,有的是1层,有的是2层,有的是5层,现在怎么查出这些节点的所有父节点的信息呢(gqgx_company_level中有id,name,p_id)

解决了再加200分
展开
 我来答
chen_hongyang
推荐于2017-05-21 · TA获得超过5447个赞
知道大有可为答主
回答量:2790
采纳率:91%
帮助的人:874万
展开全部
用函数做,根据你的表结构改:
父节点查询子节点
create function GetChildID(@ParentID int)
returns @t table(ID int)
as
begin
insert into @t select id from table where parent_id = @ParentID
while @@rowcount<>0
begin
insert into @t select a.id from table as a
inner join @t as b
on a.parent_id = b.ID
and not exists(select 1 from @t where ID=a.ID)
end
return
end
go

子节点查询父节点
create function GetParentID(@ChildID int)
returns @t table(PID int)
as
begin
insert into @t select parent_id from table where ID=@ChildID
while @@rowcount<>0
begin
insert into @t select a.parent_id from table as a
inner join @t as b
on a.ID=b.PID
and not exists(select 1 from @t where PID=a.parent_id)
end
return
end
go
更多追问追答
追问
然后呢,创建了函数了之后该怎么和我那个条件连接起来? 还有这个函数里面的表和字段需要改动吗?
追答
如创建了函数,你要查12节点的父节点,可以用 select * from GetParentID('12') 这样,改动语句要先改:  insert into @t select parent_id from table where ID=@ChildID 这里的table是表名,id是子节点字段名,下面的语句跟着修改
xiao邪恶3
2015-10-28 · TA获得超过153个赞
知道小有建树答主
回答量:314
采纳率:100%
帮助的人:68.1万
展开全部
一个子节点有多个父节点?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
戢文君Cd
2014-04-12
知道答主
回答量:17
采纳率:0%
帮助的人:11.9万
展开全部
写个递归查询不就可以了吗
追问
我现在就是在捉摸这个递归查询啊,不怎么好写,能指导下吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式