一般用来得到含有层次结构的数据(比如tree)。
SELECT employee_id, last_name, manager_id
FROM employees
CONNECT BY PRIOR employee_id = manager_id;EMPLOYEE_ID LAST_NAME                 MANAGER_ID
----------- ------------------------- ----------
101 Kochhar 100
108 Greenberg 101
109 Faviet 108
110 Chen 108
111 Sciarra 108
112 Urman 108
113 Popp 108
......-------------------------------
SELECT employee_id, last_name, manager_id, LEVEL
FROM employees
CONNECT BY PRIOR employee_id = manager_id;
EMPLOYEE_ID LAST_NAME MANAGER_ID LEVEL
----------- ------------------------- ---------- ----------
101 Kochhar 100 1
108 Greenberg 101 2
109 Faviet 108 3
110 Chen 108 3
111 Sciarra 108 3
112 Urman 108 3
113 Popp 108 3
....

解决方案 »

  1.   

    start with ... connect by 主要用于分级查询
    比如你有部门信息表
    dept( 
    deptno 部门号
    deptname 部门名称
    mgrno 上级部门
    )
    有如下记录
    deptno , deptname , mgrno 
    1        总公司       null
    2        上海分公司   1
    3        浙江分公司   1
    4        杭州分公司   3
    ...你想查询总公司下所有的分公司,可以使用如下语句
    select * , level from dept connect by PRIOR deptno =  mgrno ;
    显示:
    deptno , deptname , mgrno , level 
    1        总公司       null  1
    2        上海分公司   1     2 
    3        浙江分公司   1     2
    4        杭州分公司   3     3
    ...你想查询浙江分公司下所有的分公司,可以使用如下语句
    select * , level from dept start with deptno = 3 connect by connect by PRIOR deptno =  mgrno ;
    3        浙江分公司   1     1
    4        杭州分公司   3     2
      

  2.   

    connect by PRIOR 不用  PRIOR  不行吗?
      

  3.   

    不行,它是家族树查找语法的关键字,PRIOR 后可以接deptno(从根向叶查找) 也可以接parent_deptno(从叶向根查找)
      

  4.   

    编写树形:
    create table Dept(
     DepartNO  varchar2(10),
       DepartName  varchar2(20),
     TopNo    varchar2(10));insert into Dept values('001','董事会','0');
    insert into Dept values('002','总裁办','001');
    insert into Dept values('003','财务部','001');
    insert into Dept values('004','市场部','002');
    insert into Dept values('005','公关部','002');
    insert into Dept values('006','销售部','002');
    insert into Dept values('007','分销处','006');
    insert into Dept values('008','业务拓展处','004');
    insert into Dept values('009','销售科','007');CREATE TABLE TempDept

     TempdeptNo    char(4), /*部门编号*/
     TempdeptName   varchar2(20), /*部门名称*/
      UpperTempdeptNo  char(4), /*上级部门编号*/
      UpperTempdeptName  varchar2(20), /*上级部门名称*/
     TempdeptLevel   number(4) /*部门所处的级别*/
    );select departname
    from dept
    connect by prior departno=topno
    start with topno='0';
      

  5.   

    http://blog.csdn.net/lbl20020123/archive/2004/07/28/54270.aspx