<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    悟心

    成功不是將來才有的,而是從決定去做的那一刻起,持續(xù)累積而成。 上人生的旅途罷。前途很遠(yuǎn),也很暗。然而不要怕。不怕的人的面前才有路。

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      93 隨筆 :: 1 文章 :: 103 評論 :: 0 Trackbacks
    Start withConnect By子句遞歸查詢一般用于一個表維護(hù)樹形結(jié)構(gòu)的應(yīng)用。
    創(chuàng)建示例表:
    CREATE TABLE TBL_TEST
    (
      ID    
    NUMBER,
      NAME  
    VARCHAR2(100 BYTE),
      PID   
    NUMBER                                  DEFAULT 0
    );
     
    插入測試數(shù)據(jù):
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');
     
    從Root往樹末梢遞歸
    select * from TBL_TEST
     start 
    with id=1
     connect 
    by prior id = pid
     
    從末梢往樹ROOT遞歸
    select * from TBL_TEST
     start 
    with id=5
     connect 
    by prior pid = id
    =====
    對于oracle進(jìn)行簡單樹查詢(遞歸查詢)

    DEPTID PAREDEPTID NAME 
    NUMBER NUMBER CHAR (40 Byte) 
    部門id 父部門id(所屬部門id) 部門名稱 


    通過子節(jié)點(diǎn)向根節(jié)點(diǎn)追朔.

    Sql代碼 
    1.select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid   
    Sql代碼  
    1.select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid   
     
    select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid  

    通過根節(jié)點(diǎn)遍歷子節(jié)點(diǎn). 

    Sql代碼 
    1.select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid   
    Sql代碼  
    1.select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid   
    select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid  

    可通過level 關(guān)鍵字查詢所在層次. 

    Sql代碼 
    1.select a.*,level from persons.dept a start with paredeptid=0 connect by prior deptid=paredeptid   
    Sql代碼  
    1.select a.*,level from persons.dept a start with paredeptid=0 connect by prior deptid=paredeptid   
    select a.*,level from persons.dept a start with paredeptid=0 connect by prior deptid=paredeptid  

    再次復(fù)習(xí)一下:start 
    with connect by 的用法, start with 后面所跟的就是就是遞歸的種子。 

    遞歸的種子也就是遞歸開始的地方 connect 
    by 后面的"prior" 如果缺省:則只能查詢到符合條件的起始行,并不進(jìn)行遞歸查詢; 

    connect 
    by prior 后面所放的字段是有關(guān)系的,它指明了查詢的方向。 

    練習(xí): 通過子節(jié)點(diǎn)獲得頂節(jié)點(diǎn) 

    Sql代碼 
    1.select FIRST_VALUE(deptid) OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS firstdeptid from persons.dept start with deptid=76 connect by prior paredeptid=deptid  
    ====這種方法只是當(dāng)表里就有一顆樹,多棵樹怎么辦?

    .聲明:JavaEye文章版權(quán)屬于作者,受法律保護(hù)。沒有作者書面許可不得轉(zhuǎn)載。 
    posted on 2011-03-16 11:30 艾波 閱讀(701) 評論(0)  編輯  收藏 所屬分類: SQL
    主站蜘蛛池模板: 一级一看免费完整版毛片| 国产乱妇高清无乱码免费| 亚洲春色在线观看| 内射干少妇亚洲69XXX| 亚洲a在线视频视频| 亚洲一区二区三区深夜天堂| 亚洲日本va一区二区三区| 国产精品亚洲专区一区| 免费看美女午夜大片| 久久中文字幕免费视频| 国产三级在线观看免费| 亚洲AV无码一区二三区| 精品日韩亚洲AV无码| 国产成人亚洲毛片| 亚洲一区免费视频| 久久精品国产亚洲精品| 亚洲熟女综合色一区二区三区| yy一级毛片免费视频| 青青草国产免费久久久91| 狠狠综合久久综合88亚洲| 国内精品久久久久影院亚洲| a毛片全部播放免费视频完整18| 免费无码看av的网站| 久久精品亚洲中文字幕无码麻豆 | 亚洲欧洲日本精品| 久久九九全国免费| 国产亚洲精品无码拍拍拍色欲| 亚洲精品第一国产综合野| 中文字幕免费视频一| 91麻豆精品国产自产在线观看亚洲| 亚洲AV日韩综合一区尤物| 114级毛片免费观看| 亚洲成AV人片在线观看无码 | 在线观看成人免费视频| 亚洲1234区乱码| 免费观看成人毛片a片2008| 亚洲精品欧洲精品| a拍拍男女免费看全片| 亚洲无线一二三四区| 一本无码人妻在中文字幕免费| 亚洲国产成AV人天堂无码|