2011-12-14 9 views
1

私は、従業員番号、名前、およびマネージャの従業員番号を表示する従業員テーブルを持っています。 emp名、emp#、マネージャ名、mgr#を表示するクエリを作成しようとしています。従業員テーブルのマネージャ名をSQLクエリにどのように表示しますか?

テーブルは次のようになります。列の

EMPNO ENAME JOB  MGR HIREDATE SAL COMM DEPTNO 
7839 KING PRESIDENT - 17-NOV-81 5000 - 10 
7698 BLAKE MANAGER 7839 01-MAY-81 2850 - 30 
7782 CLARK MANAGER 7839 09-JUN-81 2450 - 10 
7566 JONES MANAGER 7839 02-APR-81 2975 - 20 
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 
7900 JAMES CLERK  7698 03-DEC-81 950 - 30 
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 
7902 FORD ANALYST 7566 03-DEC-81 3000 - 20 

三は、彼らがテーブルにあるので非常にシンプルですが、どのように私は私が持っているすべては彼らのマネージャーの従業員番号で管理者名が追加でしょうか?

これは、これを試してみてくださいそれだけで3つのcolums

select ename as "Employee", empno as "Emp#", mgr as "Mgr#" from emp; 

を表示し、私は今のところすべてのヘルプは

答えて

9
select 
    emp.ename as "Employee", 
    emp.empno as "Emp#", 
    emp.mgr as "Mgr#", 
    m.ename as "Manager" 
from 
emp 
    LEFT OUTER JOIN emp m ON 
    emp.mgr = m.empno 
2
select 
    e.ename as "Employee", 
    e.empno as "Emp#", 
    e.mgr as "Mgr#", 
    m.ename as "MgrName" 
from emp e 
join emp m on e.mgr = m.empno 
4

をいただければ幸いしたものです:

select e.ename ,e.sal, (select s.grade from salgrade s where e.sal between s.losal and s.hisal) empgrade ,e2.ename"mgr", e2.sal mgrsal, 
(select s.grade from salgrade s where e2.sal between s.losal and s.hisal) mgrgrade from emp e,emp e2 
where e.mgr=e2.empno(+) 
1
SELECT DISTINCT E.ENAME,E.job 
    FROM EMP E 
    JOIN EMP Y 
    ON E.EMPNO=Y.MGR; 

これにより、マネージャである別個の従業員名が与えられます。

または:

SELECT E.ENAME,E.job 
    FROM EMP E 
    JOIN EMP Y 
     ON E.EMPNO=Y.MGR; 

または:

SELECT E.ENAME,E.job 
    FROM EMP E, EMP Y 
    WHERE 
    E.EMPNO=Y.MGR; 
0
SELECT (CASE 
WHEN e1.manager_id IS NULL THEN 
    e1.last_name ||' IS THE PRESIDENT' 
ELSE 
    e2.last_name || ' IS THE MANAGER OF '||e1.last_name 
END)"HIERARCHY" FROM hr.employees e1, hr.employees e2 WHERE e1.manager_id = e2.employee_id(+) ORDER BY e1.manager_id NULLS FIRST 
+0

このクエリを試してみてください、私たちはデータが欲しい - 装飾のありません。 UIとデコレーションは別のレイヤーに残す必要があります。ヌルを処理したり飾ったりしないでください!これらすべてのことを実行している間、あなたの答えは他のすべての(有用な)列を欠いています。 –

1
select e.ename as "Employee", e.empno as "Emp#", e.mgr as "Mgr#", m.ename as "MgrName" from emp e , emp m on e.mgr = m.empno 
0

を私はそれだけで正常に動作してみました。

​​
1

計算作業のための通常

SELECT E2.EMPID,E2.EMPNAME,E1.EMPNAME 
AS MGRNAME 
FROM employee E1 
    INNER JOIN employee E2 ON E1.Empid=E2.ManagerId 
-1
Select e.ename empname , m.ename managername,e.empno empno ,m.mgr managerno from emp e, mgr m 
where m.empno=e.mgr 
関連する問題