ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 树状查询

树状查询

原创 Linux操作系统 作者:oralau 时间:2009-05-09 22:10:42 0 删除 编辑

 

select   empno,ename,mgr,level from emp  start with  mgr=7566  connect  by   prior   mgr=empno ;

     EMPNO ENAME             MGR      LEVEL
---------- ---------- ---------- ----------
      7788 SCOTT            7566          1
      7566 JONES            7839          2
      7839 KING                           3
      7902 FORD             7566          1
      7566 JONES            7839          2
      7839 KING                           3

6 rows selected.

从mgr=7566的记录开始,向根节点遍历,如果有多条记录的mgr=7566,那么每条记录分别遍历一直到根。start with相当于where条件可以由and或者or或者not连接多个条件表达式,mgr可以是任意column。注意一定要加prior关键字。level是伪列表示从mgr=7566的记录开始(第一层)向上遍历的层次数。

select   empno,ename,mgr,level from emp  start with  mgr=7566  connect  by   prior   empno=mgr;

     EMPNO ENAME             MGR      LEVEL
---------- ---------- ---------- ----------
      7788 SCOTT            7566          1
      7876 ADAMS            7788          2
      7902 FORD             7566          1
      7369 SMITH            7902          2

从mgr=7566的记录开始,向叶子节点遍历,如果有多条记录的mgr=7566,那么每条记录分别遍历一直到叶子节点。start with相当于where条件可以由and或者or或者not连接多个条件表达式,mgr可以是任意column。注意一定要加prior关键字。level是伪列表示从mgr=7566的记录开始(第一层)向下遍历的层次数。


select sys_connect_by_path(empno,'/') from emp  start with  empno=7566  connect  by   prior   empno=mgr;

SYS_CONNECT_BY_PATH(EMPNO,'/')
------------------------------------------------------------------------------------------------------------------------
/7566
/7566/7788
/7566/7788/7876
/7566/7902
/7566/7902/7369         

sys_connect_by_path是遍历到当前节点所经历的节点记录,"/"是分隔号,注意不要用","否则会报错。

树状查询.GIF

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20844861/viewspace-594623/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 基础select语句
下一篇: 子查询
请登录后发表评论 登录
全部评论

注册时间:2009-02-17

  • 博文量
    38
  • 访问量
    36926