--层次查询和LEVEL伪劣
--语法
SELECT 列 FROM 表 CONNECT BY PRIOR 连接条件(层次条件) START WITH 开始条件;
--说明
CONNECT BY PRIOR:指定层次条件(自连接条件)
START WITH:指定第一条数据的筛选条件
-------------------------------------------------------------------------------
--示例1,展示所有员工表所有上下级的层次关系
SELECT EMP.*,LEVEL FROM EMP CONNECT BY PRIOR EMPNO=MGR
START WITH MGR IS NULL;
--示例2,查询员工BLAKE的直接下属员工的信息
--方法一,采用层次查询和LEVEL伪劣
SELECT * FROM
(SELECT EMP.*,LEVEL RK FROM EMP CONNECT BY PRIOR EMPNO=MGR
START WITH ENAME='BLAKE')
WHERE RK=2;
--方法二,采用子查询
SELECT * FROM EMP WHERE MGR=(SELECT EMPNO FROM EMP WHERE ENAME='BLAKE');
--方法三,采用联合查询
SELECT E1.* FROM EMP E1 LEFT JOIN EMP E2 ON E1.MGR=E2.EMPNO
WHERE E2.ENAME='BLAKE';