通过条款混淆连接

时间:2016-02-02 15:49:34

标签: sql oracle

我有一个问题,我需要像经理B emp下的A emp一样获得o / p而B emp在C的经理之下,然后A员工必须连接到C.我使用层次结构查询,但是找不到0 / p。

示例:

Select * from emp where mgr=7566 --(consider these as c);
"EMPNO" "ENAME"     "JOB"     "MGR"   "HIREDATE"    "SAL"   "COMM"  "DEPTNO"
7788     "SCOTT"     "ANALYST"     7566   19-APR-87     3000            20 
7902     "FORD"      "ANALYST"     7566    03-DEC-81    3000            20

--- now JONES is mgr of  "SCOTT"  and I have taken 7788 (scott)

select * from emp where mgr=7788;
"EMPNO" "ENAME" "JOB"   "MGR"   "HIREDATE"  "SAL"   "COMM"  "DEPTNO"
7876    "ADAMS" "CLERK" 7788    23-MAY-87   1100        20

现在我们可以看到斯科特是亚当斯的人。我需要得到亚当斯和琼斯之间的关系..我在下面的sql上工作,但是没能得到0 / p ..

select * from emp connect by prior empno=mgr  start with mgr 
in ( select mgr from emp where mgr=7566)
and empno=7876.

专家请提供一些I / P ...

2 个答案:

答案 0 :(得分:0)

也许您需要以下内容,展示"顶级经理"每个员工:

session_id

答案 1 :(得分:0)

假设您希望员工和经理之间建立三级关系。试试这个问题:

SELECT e1.empno, e2.mgr
FROM emp AS e1 INNER JOIN emp AS e2
WHERE e1.mgr = e2.empno

注意这个SQL查询不会返回每个员工的最高管理者。

所以,如果' B'是' A'的经理还有' C'是' B'的经理,查询将返回' A'和' C'。

相关问题