CREATE TABLE TBL_TEST(
ID NUMBER,NAME VARCHAR2(100 BYTE),PID NUMBER DEFAULT 0);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');
select * from TBL_TESTstart with id=5connect by prior  pid= id 
哪位能给我详细解释一下start with connect by 含义即用途,在此谢过。

解决方案 »

  1.   

    connect by 是结构化查询中用到的,其基本语法是: 
    select ... from tablename start by cond1 
    connect by cond2 
    where cond3; 
    简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段: 
    id,parentid那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。 
    用上述语法的查询可以取得这棵树的所有记录。 
    其中COND1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。 
    COND2是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR ID=PRAENTID就是说上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录。 
    COND3是过滤条件,用于对返回的所有记录进行过滤。 
    具体细节还是需要看看书,这个东东很有用的。百度的,我也不懂,很少来这个版
      

  2.   

    connect by prior建立了一个层次结构, start with表示这个层次结构的开始条件,如果不加的话就会把所有的结点做为起点遍历的.比如你这里是一个从树叶到树根的遍历,其路径为5->2->1->0
    如果不加start with = 5,则会把所有的叶到根的遍历执行一遍.connect by prior有两个含义,一个是表示是建立了层次结构,另外就是遍历的方向,如果是
    connect by prior 下层字段 = 上层字段,则是从根到叶,如果是
    connect by prior 上层字段 = 下层字段,则是从叶到根.楼主的这个例子是从叶到根的