oracle如何使用不同的结果执行这两个查询
1
SELECT e.ename,
m.ename
FROM emp e,
emp m
WHERE e.empno = m.mgr;
2
SELECT e.ename,
m.ename
FROM emp e,
emp m
WHERE m.empno = e.mgr; /*<-- Different*/
没有得到明确的结果......
先谢谢你们所有人。
答案 0 :(得分:2)
第一个查询显示经理及其员工,例如BLAKE是5名员工的经理。第二部分显示了员工及其经理,因此BLAKE在第二列中出现了五次。
我认为他们可以写得更清楚,如:
-- Managers and their employees:
select m.ename as manager
, e.ename as employee
from emp m
join emp e on e.mgr = m.empno
order by 1,2;
MANAGER EMPLOYEE
---------- ----------
BLAKE ALLEN
BLAKE JAMES
BLAKE MARTIN
BLAKE TURNER
BLAKE WARD
CLARK MILLER
FORD SMITH
JONES FORD
JONES SCOTT
KING BLAKE
KING CLARK
KING JONES
SCOTT ADAMS
13 rows selected
-- Employees and their managers:
select e.ename as employee
, m.ename as manager
from emp e
join emp m on m.empno = e.mgr
order by 1,2;
EMPLOYEE MANAGER
---------- ----------
ADAMS SCOTT
ALLEN BLAKE
BLAKE KING
CLARK KING
FORD JONES
JAMES BLAKE
JONES KING
MARTIN BLAKE
MILLER CLARK
SCOTT JONES
SMITH FORD
TURNER BLAKE
WARD BLAKE
13 rows selected
答案 1 :(得分:0)
这是两个不同的查询:
第一个列出员工(左)及其经理(右)。
第二个列出了经理(左)及其员工(右)。
你需要决定你想要哪一个。
此外,在连接两个表时,您应该真正使用JOIN
关键字(它不再是90秒)。您的第一个查询将如下所示:
SELECT e.ename,
m.ename
FROM emp e
JOIN emp m on e.empno = m.mgr;