刚学oracle,有个嵌套查询问题,我只能从两个表中建立视图查询出如下结果,但是得不到我想要的,
有如下结果:
ID    PID    PNAME   NAME
01    null   null    华南
02    null   null    华东
03    01     华南     广东
04    01     华南     广西
05    03     广东     广州
06    02     华东     江苏
07    06     江苏     南京
08    03     广东     深圳
其中:PID 是指“parent”ID,PNAME 是“parent”NAME我想要查询出来类似这样的:华南-->广东-->广州 深圳诚求,拜谢!

解决方案 »

  1.   

    看不懂你要的是什么样?显示成"华南-->广东-->广州 深圳 ",这么一串字符??
      

  2.   

    SQL> select substr(sys_connect_by_path(name,'->'),2) from dd start with pid is null connect by pid=prior id;SUBSTR(SYS_CONNECT_BY_PATH(NAME,'->'),2)
    ----------------------------------------------------------------------------------------------------
    >华南
    >华南->广东
    >华南->广东->广州
    >华南->广东->深圳
    >华南->广西
    >华东
    >华东->江苏
    >华东->江苏->南京已选择8行。
      

  3.   

    start with
    connect by...不知道能不能实现LZ要求?
      

  4.   

    没有说明白,补充一下
    查询结果如下:area    province    citys华南     广东          广州“空格”深圳
    华东     江苏          南京这样说是否会清晰一点?
      

  5.   

    SQL>select aa||'->'||replace(bb,',',' ') from (select aa,wmsys.wm_concat(bb) bb from (select substr(substr(sys_connect_by_path(name,'->'),3),1,instr(substr(sys_connect_by_path(name,'->'),3),'->',4)-1) aa,substr(substr(sys_connect_by_path(name,'->'),3),instr(substr(sys_connect_by_path(name,'->'),3),'->',4)+2) bb from dd where level=3 start with pid is null connect by pid=prior id) group by aa);AA||'->'||REPLACE(BB,',','')
    ---------------------------------
    华东->江苏->南京
    华南->广东->广州 深圳
      

  6.   

    select cc,bb,replace(wmsys.wm_concat(name),',',' ') ee from (select (select name from dd where name=(select pname from dd where name=gg.pname)) cc,(select name from dd where name=gg.pname) bb,name 
    from (select level ff,pname,name from dd start with pid is null connect by prior id=pid) gg
    where ff=3 ) group by cc,bb;
      

  7.   


    谢谢,谢谢。我得去图书馆借点书 好好研究一下SQL,呵呵