各位好,有个问题请教一下.
如 有文件file.txt内容如下:
id pid name
2 1 d
1 0 a
3 1 b
4 2 c
5 3 e
id是不重复的,pid是父id,要求遍历所有的父子节点,实现如下的输出
0->1->2->4 a,d,c
0->1->3->5 a,b,e
推荐查看《CTE 递归查询》,
create table #t (id int, pid int, name varchar(100) ) insert into #t select 2, 1, 'd' union select 1, 0, 'a' union select 3, 1, 'b' union select 4, 2, 'c' union select 5, 3, 'e' ;with cte as ( select id,pid,name,name namepath from #t where pid=0 union all select t.id,t.pid,t.name, cast(t.name+'->'+ c.namepath as varchar(100)) as namepath from #t t inner join cte as c on t.pid=c.id ) select * from cte
谢谢.数据不是存在数据库的 是从文件里读的 然后看看能不能用java或shell awk处理成(注:id是不重复的,pid是父id(即第二列),要求遍历所有的父子节点,实现如下的输出)
0->1->2->4 a,d,c
0->1->3->5 a,b,e
读取后构造一个树,然后输出
能举个栗子吗? 类要怎么设计呢?
@moperyblue: 不会java、、、里面应该有现成的树吧,或者你自己定一个,有parent,有child集合就行