層次查詢,start with ... connect by ....
解决方案 »
- Oracle 数据库连接杂记
- exp/imp问题
- 关于 程序关闭时 内存中数据处理问题
- 求教:在sqlserver中执行正确的但在oracle 出错!!
- if(条件) sql语句怎么写?
- 通过触发器实现从表的插入修改?
- 登陆pl/sql developer 时有错: 没有监听器? 而且 服务里面的OracleOraHome90TNSListener打不开:提示:系统找不到指定路径!使用Net C
- 9i登录问题??急!!!
- ¤¤¤¤¤ VC中通过ODBC操作Oracle中的BLOB字段,该怎么办?
- 资料档案库的配置问题!!
- 我现在想学ORACLE,请问到哪里下载入门教程?谢谢!
- Oracle数据库周期性地报一个奇怪的异常
要使用查询遍历,需要在将数据在基表中按照层次结构进行存储。比如一个组织机构就是这样的典型例子。实现语句:SELECT column
FROM table_name
START WITH column=value
CONNECT BY PRIOR 父主键=子外键
例1:在ORACLE的EMP 表中,每一条记录都有一个唯一标识当前雇员的empno和标识这个雇员的经理的mgr列。如果mgr 为空,则该雇员是该机构的最顶级。现在要列出每个雇员的层次结构(从顶到底):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 778214 rows selected.SQL>从查询结果中可以看出,由于JONES、BLAKE、CLARK的上司是KING,所以JONES等MGR(经理编号)=KING的empno号,即KING的直接下级是JONES、BLAKE、CLARK,因为他们的MGR与KING的EMPNO一样。§7.3.2 遍历至根
例2:现在要从某个雇员往他的上级列出该雇员的层次结构(从顶到底):
SQL> col ename for a30
SQL> l
select lpad(' ',4*(level-1))||ename ename,mgr,empno from emp
start with mgr=7788
connect by prior mgr= empno
SQL> /ENAME MGR EMPNO
------------------------------ ----- ---------
ADAMS 7788 7876
SCOTT 7566 7788
JONES 7839 7566
KING 7839
例3:现在要列出所有雇员的层次结构(从顶到底): select lpad(' ',4*(level-1))||ename name ,empno,mgr from emp
start with mgr is not null
connect by empno=prior mgr
NAME EMPNO MGR
-------------------- --------- -----
SMITH 7369 7902
FORD 7902 7566
JONES 7566 7839
KING 7839
ALLEN 7499 7698
BLAKE 7698 7839
KING 7839
WARD 7521 7698
BLAKE 7698 7839
KING 7839
JONES 7566 7839
KING 7839
MARTIN 7654 7698
BLAKE 7698 7839
KING 7839
BLAKE 7698 7839
KING 7839
CLARK 7782 7839
KING 7839
SCOTT 7788 7566
JONES 7566 7839
KING 7839
TURNER 7844 7698
BLAKE 7698 7839
KING 7839
ADAMS 7876 7788
SCOTT 7788 7566
JONES 7566 7839
KING 7839
JAMES 7900 7698
BLAKE 7698 7839
KING 7839
FORD 7902 7566
JONES 7566 7839
KING 7839
MILLER 7934 7782
CLARK 7782 7839
KING 783938 rows selected.
[email protected]