装配关系 tttt
   mid  parent_id
    A
    A1     A
    A2     A
   A11     A1
   A21     A2
    B      A11
    B      A21 查询语句
select * from tttt t
start with id = 'A'
connect by nocycle prior mid = parent_id出结果
A      
A1  A     
A11 A1
B   A11
B   A21
A2  A
A21 A2
B   A11
B   A21如何才能出结果是
A      
A1  A     
A11 A1
B   A11
A2  A
A21 A2
B   A21现在查的数据多了两条

解决方案 »

  1.   

    更正  表关系
    mid  parent_id

    A1       A
    A2       A
    B        A1
    B        A2
    C         B
    C         B
    查询结果
    A
    A1   A
    B    A1
    C    B
    C    B
    A2   A
    B   A2
    C    B
    C    B
    多了两条数据,需要的结果
    A   
    A1   A
    B    A1
    C    B
    A2   A
    B   A2
    C    B
      

  2.   


    with tb as(
    select 'A' mid,null parent_id from dual union all
    select 'A1', 'A' from dual union all
    select 'A2', 'A' from dual union all
    select 'B', 'A1' from dual union all
    select 'B', 'A2' from dual union all
    select 'C', 'B' from dual union all
    select 'C', 'B' from dual)
    --以上是提供数据的语句,但是为什么会有两个完全相同的行呢?
    select  * from (select distinct * from tb)
    connect by prior mid=parent_id
    start with parent_id is nullMI PA
    -- --
    A
    A2 A
    B  A2
    C  B
    A1 A
    B  A1
    C  B7 rows selected.
      

  3.   

    抱歉,是我提问的错误!
    产品关系,零件、部件、整件,总图
    A                 总图
    A1    A    A1     A1装入A,整件为A1
    A2    A    A2     A2装入A,整件为A2
    B     A1   A1     B部件,装入A1,整件为A1
    B     A2   A2     B部件,装入A2,整件为A1
    C     B    A1     C零件,装入B,整件为A1
    C     B    A2     C零件,装入B,整件为A2
    但是查询结果出来后,数量多了
      

  4.   


    --你这个需求好像只有排序就好了
    with tb as(
    select 'A' mid,null parent_id,null pid from dual union all
    select 'A1', 'A','A1' from dual union all
    select 'A2', 'A','A2' from dual union all
    select 'B', 'A1','A1' from dual union all
    select 'B', 'A2','A2' from dual union all
    select 'C', 'B','A1' from dual union all
    select 'C', 'B','A2' from dual)
    select  * from tb
    order by pid nulls first,parent_id nulls first,midMI PA PI
    -- -- --
    A
    A1 A  A1
    B  A1 A1
    C  B  A1
    A2 A  A2
    B  A2 A2
    C  B  A2