本帖最后由 jiangzx2010 于 2011-07-15 14:21:19 编辑

解决方案 »

  1.   

    with t as (
      select 1 child_id, 0 parent_id from dual union all
      select 7 child_id, 6 parent_id from dual union all
      select 3 child_id, 2 parent_id from dual union all
      select 4 child_id, 3 parent_id from dual union all
      select 6 child_id, 5 parent_id from dual union all
      select 5 child_id, 4 parent_id from dual union all
      select 2 child_id, 1 parent_id from dual)
    SELECT *
      FROM t
     START WITH child_id = 4
    CONNECT BY child_id = PRIOR parent_id;
      

  2.   

    select   t.level,t.*   from   table  t connect    by  privior parent_id=chld_id  start  with child_id=0;