作者:孙英鹏 撰写时间:2019年3月26日
自连接的关系
今天给大家讲的是ORACLE的自连接的关系,什么是自连接?顾名思义就是自己连自己,为了区分自连接的用法,我们来看一下。
首先看一下题目:
查询员工的id,姓名,附加其上级的姓名
分析:
首先看清楚题意,查询员工姓名和上级姓名,这时可能有人会想到直接查不用自连接,因为员工姓名和上级姓名都在一张员工表里面,但我想说的是你错了,这样连接的话会出现员工姓名和上级姓名混乱,因为员工表有的员工是没有上级的,这样查出的数据是假数据,所以不能这样查,一定要用自连接方法。
不用自连接的答案:
方法1:
SELECT EMPLOYEE_ID , LAST_NAME , MANAGER_ID , LAST_NAME
FROM EMPLOYEES
ORDER BY EMPLOYEE_ID ASC;
方法2:
SELECT E.EMPLOYEE_ID , E.LAST_NAME , E.MANAGER_ID , D.LAST_NAME
FROM EMPLOYEES E , EMPLOYEES D
WHERE D.EMPLOYEE_ID = E. EMPLOYEE_ID
ORDER BY EMPLOYEE_ID ASC;
方法1和方法2都是错误的用法,方法1很明显是错的,方法2是把员工ID和员工ID弄混了,应该是员工ID和上级ID,这样才能查出来。
错误结果:
自连接的答案:
SELECT E.EMPLOYEE_ID , E.LAST_NAME , E.MANAGER_ID , D.LAST_NAME
FROM EMPLOYEES E , EMPLOYEES D
WHERE D. EMPLOYEE_ID = E. MANAGER_ID
ORDER BY EMPLOYEE_ID ASC;你
正确结果: