请教大家,取这个树的最顶级节点,该怎么写!

pass2005 2009-12-02 07:27:05
建表和填充记录,
create table test(superid varchar2(20),id varchar2(20));



insert into test values('1','11');
insert into test values('1','12');

insert into test values('2','21');
insert into test values('2','22');

insert into test values('11','111');
insert into test values('11','112');

insert into test values('12','121');
insert into test values('12','122');

insert into test values('21','211');
insert into test values('21','212');

insert into test values('22','221');
insert into test values('22','222');

commit;
想通过一个sql语句查询重如下结果:
ID superid topSuperid(最顶层ID)
1 0 0
111 11 1
211 21 2

请问大家有方法么?

...全文
273 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pass2005 2009-12-08
  • 打赏
  • 举报
回复
指定节点是指?
答:就指最底层的节点


没错,根节点就是通过superid一级一级的取,一直取到最顶端。
pass2005 2009-12-07
  • 打赏
  • 举报
回复
楼上的代码好像只能针对,3级节点的目录树,如果是级数不确定呢!
sxx_tt 2009-12-07
  • 打赏
  • 举报
回复

select a.id,a.superid,nvl(b.superid,0)
from test a,(select id,nvl(superid,0) superid from test) b
where a.superid = b.id(+)
sxx_tt 2009-12-07
  • 打赏
  • 举报
回复

select a.id,a.superid,b.superid
from test a,(select id,superid from test) b
where a.superid = b.id
pass2005 2009-12-07
  • 打赏
  • 举报
回复
取每个指定节点的上级节点,上上级节点!
小灰狼W 2009-12-07
  • 打赏
  • 举报
回复
这个意思?

with tt as(
select superid,'0' a,'0' b from test minus select id,'0','0' from test)
select id,superid,connect_by_root superid topSuperid from test
start with superid in (select superid from tt)
connect by prior id=superid
union all select * from tt
小灰狼W 2009-12-07
  • 打赏
  • 举报
回复
superid是父节点?为什么会得到那3条记录?
pass2005 2009-12-07
  • 打赏
  • 举报
回复
有人知道不?
小灰狼W 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pass2005 的回复:]
取每个指定节点的上级节点,上上级节点!
[/Quote]
指定节点是指?这个说明和主题中的结果不是很贴切
主要不是很明白你需要什么,大致都能通过connect by实现
稍微麻烦的一点就是,你给出的测试表里,根节点id没有出现,需要从superid里提取
pass2005 2009-12-07
  • 打赏
  • 举报
回复
所有的估计很难实现,就是想列出直接上级,和最顶上级。
但是这个树节点层数是不固定。
sxx_tt 2009-12-07
  • 打赏
  • 举报
回复
你的意思是把每个节点的所有上级节点都列出来?

3,496

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧