Oracle层次结构查询语句

2014-11-24 17:55:50 · 作者: · 浏览: 0

  要使用查询遍历,需要在将数据在基表中按照层次结构进行存储。比如一个组织机构就是这样的典型例子:


  实现语句:


  SELECT column


  FROM table_name


  START WITH column=value


  CONNECT BY PRIOR 父主键=子外键


  select lpad(' ',4*(level-1))||ename name ,empno,mgr from emp


  start with mgr is null


  connect by prior empno=mgr;


  NAME EMPNO MGR


  --------------------     --------- ---------


  KING 7839


  JONES 7566 7839


  SCOTT 7788 7566


  ADAMS 7876 7788


  FORD 7902 7566


  SMITH 7369 7902


  BLAKE 7698 7839


  ALLEN 7499 7698


  WARD 7521 7698


  MARTIN 7654 7698


  TURNER 7844 7698


  JAMES 7900 7698


  CLARK 7782 7839


  MILLER 7934 7782


  14 rows selected.


  SQL>


  从查询结果中可以看出,由于JONES、BLAKE、CLARK的上司是KING,所以JONES等MGR(经理编号)=KING的empno号,即KING的直接下级是JONES、BLAKE、CLARK,因为他们的MGR与KING的EMPNO一样。