表结构   id p_id(上级id)
2 1
3 1
4 2
5 3
6 7
8 7
我现在想得出所有 id的和 第一级根节点的对应关系 如下图1 2
1 3
1 4
1 5
7 6
7 8求助 在oracle10g sql该怎么写。

解决方案 »

  1.   

    SELECT e.id,(select h.p_id FROM 你的表 h
    where CONNECT_BY_ISLEAF=1
    START WITH h.id=e.id
    CONNECT BY PRIOR h.p_id = h.id) p_id
    FROM 你的表 e
    order by p_id
    以上可以实现你举得这个例子
      

  2.   


    有 所有一级节点的 上级节点都是‘ZZZ’
      

  3.   

    改成这样就行了。
    SELECT e.id,(select h.id FROM 你的表 h
    where h.p_id='ZZZ'
    START WITH h.id=e.id
    CONNECT BY PRIOR h.p_id = h.id) p_id
    FROM 你的表 e
    order by p_id