start with 就是你开始的条件,就是从哪个记录开始进行关联,connect by 是父记录与子记录之间的关联关系!

解决方案 »

  1.   

    如果数据存储为树形结构的话,
    可以查询某个节点下的所有子节点以及叶子节点。如:
    16:52:33 SQL> select * from ttree;ID         PID             PRICE
    ---------- ---------- ----------
    B          A                  20
    D          B                   3
    E          B                   5
    G          D                   2
    C          A                   1
    F          C                   2
    G          C                   5
    G          H                   3已选择8行。已用时间:  00: 00: 00.93
    17:04:16 SQL> select * from ttree start with id='B' connect by prior id=pid;ID         PID             PRICE
    ---------- ---------- ----------
    B          A                  20
    D          B                   3
    G          D                   2
    E          B                   5已用时间:  00: 00: 00.32
    17:04:49 SQL> 查询了从节点B下的所有子节点(D),以及叶子节点(G,E)
      

  2.   

    这种语法是oracle中树型结构查询的语法。
      

  3.   

    start with orgid=orgid connect by prior porgid=orgid
    这部分为什么这么写
      

  4.   

    这个是对每一个节点(orgid=orgid ),查询它的子节点父节点与子节点 的关系通过 porgid=orgid 来识别
      

  5.   

    select * from org start with orgid=56 connect by prior porgid=56
    比如这个,怎么解释
      

  6.   

    你的语句不好。
    17:04:16 SQL> select * from ttree start with id='B' connect by prior id=pid;ID         PID             PRICE
    ---------- ---------- ----------
    B          A                  20
    D          B                   3
    G          D                   2
    E          B                   5对于每一行的id,它的父节点为pid所指向的id
    这一行:
    D          B                   3
    D的父节点为B,以此类推。
    找出所有B的子节点(start with id='B')
      

  7.   

    prior也算是关键字吧?就是 上一个的意思?
      

  8.   

    orgid=porgid
    porgid=orgid
    最后这两种写法,区别?
      

  9.   

    TREE_TABLE有以下字段 ID、UPPER_ID、CODE、NAME、DESCRIPTION
       0            FIRST  第一  我是第一
       1       0    SECOND 第二  我是第二 
    SELECT T.CODE,T.NAME FROM TREE_TABLE CONNECT BY PRIOR T.ID = T.UPPER_ID START WITH ID = 0
       |
       | ----第一
              |
              |-----第二
                     |
            |-----第三
    如果改变START WITH 后的值,就是从全树截取一部分成为一棵子树,ID的值就是子树的根
    SELECT T.CODE,T.NAME FROM TREE_TABLE CONNECT BY PRIOR T.UPPER_ID = T.ID START WITH ID = 0 
    PRIOR后的表达式表示建树的顺序,一个是从根往叶查询建树,一个是从叶往根查询建树。
      

  10.   

    CONNECT BY ORGID = PRIOR PORGID 从树的叶到根的相关记录
    CONNECT BY PORGID = PRIOR ORGID 从树的根到所有相关的叶结点的记录
      

  11.   

    一个表如果有这样两列,其中一列的值总能在另一列中找到,前者为子列,后者为父列。这种情况适合树结构查询。树查询是在标准select语句中增加了connect by 、start with两个子句完成的。以搂住的部门表为例,每一个部门应该有上一级部门(最上一级部门除外),则部门表应该包括这两个列:本部门(子列)、上级部门(父列),通过这两个列的关联可以进行类似查找某个部门以下的所有下属部门或这个部门以上所有上级部门。start with 以满足某个条件的记录为起点开始查询,connect by 与关键字prior 一起表示当前选定记录的orgid的值必须等于之前返回的记录中的porgid的值。SQL> select * from org;     ORGID NAME                     PORGID
    ---------- -------------------- ----------
             0 总裁办公室                    0
             1 研发部                        0
             2 总务处                        0
             3 开发部                        1
             4 测试部                        1
             5 后勤部                        2
             6 OA部                          2
             7 采购部                        2
             8 财务部                        2
             9 电信开发部                    3
             9 网络开发部                    3     ORGID NAME                     PORGID
    ---------- -------------------- ----------
            10 物流开发部                    3已选择12行。
    研发部及其下属部门的查找:
    SQL> select * from org connect by porgid=prior orgid start with orgid=1;     ORGID NAME                     PORGID
    ---------- -------------------- ----------
             1 研发部                        0
             3 开发部                        1
             9 电信开发部                    3
             9 网络开发部                    3
            10 物流开发部                    3
             4 测试部                        1已选择6行。
    总务处及其下属部门的查找:
    SQL> select * from org connect by porgid=prior orgid start with orgid=2;     ORGID NAME                     PORGID
    ---------- -------------------- ----------
             2 总务处                        0
             5 后勤部                        2
             6 OA部                          2
             7 采购部                        2
             8 财务部                        2