DANCE WITH JAVA

          開發出高質量的系統

          常用鏈接

          統計

          積分與排名

          好友之家

          最新評論

          Oracle中的遞歸查詢

          轉載自:http://community.csdn.net/Expert/topic/4998/4998917.xml?temp=.2047846
          表結構如下:

          該表只有兩個字段,PNODE,NODE,PNODE為NODE父結點,當該節點無子節點時,PNODE=NODE

          要求給定父結點,查出所有子節點,子孫節點......

          如:
          PNODE NODE
          ??? 1??? 2
          ??? 2??? 3
          ??? 2??? 4
          ??? 3??? 3
          ??? 4??? 4

          要求給定PNODE=1,給出結果為:
          2
          3
          4


          如果是10G以上的可以用NOCYCLE 去掉循環的影響
          ....
          start with PNODE = 1
          connect by NOCYCLE prior NODE = PNODE
          ....
          10G以下的可以試試:
          start with PNODE = 1
          connect by prior NODE = PNODE
          where NODE <> PNODE

          --------------------------------------------------------------------------------------------------------------------------------------------------------------------
          SQL> create table tab_a (pnode number(2),node number(2));

          Table created

          SQL> insert into tab_a values (1,2);

          1 row inserted

          SQL> insert into tab_a values (2,3);

          1 row inserted

          SQL> insert into tab_a values (2,4);

          1 row inserted

          SQL> insert into tab_a values (3,3);

          1 row inserted

          SQL> insert into tab_a values (4,4);

          1 row inserted

          SQL> commit;

          Commit complete
          ----- oracle9i的: 構造tab 以避免循環
          SQL> with
          ? 2? tab as (
          ? 3??? select pnode,decode(node-pnode,0,null,node) node
          ? 4??? from tab_a
          ? 5? )
          ? 6? select distinct pnode
          ? 7? from tab
          ? 8? where pnode >1
          ? 9? start with pnode=1
          ?10? connect by prior node=pnode;

          PNODE
          -----
          ??? 2
          ??? 3
          ??? 4

          posted on 2006-12-06 19:40 dreamstone 閱讀(572) 評論(0)  編輯  收藏 所屬分類: 片段

          主站蜘蛛池模板: 麻栗坡县| 全州县| 华安县| 错那县| 巴青县| 五河县| 留坝县| 德清县| 武宁县| 乌兰县| 凉城县| 张家港市| 临泽县| 和平区| 调兵山市| 富民县| 贞丰县| 新津县| 郎溪县| 葫芦岛市| 邯郸市| 玛沁县| 汶上县| 抚远县| 台东县| 江门市| 盐城市| 若羌县| 永福县| 沿河| 泰顺县| 措勤县| 闽清县| 东源县| 朝阳区| 兴国县| 巩义市| 隆安县| 兴义市| 铜梁县| 丁青县|