2016-08-17 10 views
0

に1の値を取得する私はこのような従業員表empを持っている:多くの関係

emp_id emp_name emp_role 
______________________________ 
1   aaaa  Supervisor 
2   bbbb  Supervisor 
3   cccc  helper 
4   dddd  helper 
5   eeee  helper 
6   ffff  helper 

、別のテーブルSupervisorとヘルパーのマッピング(Sup_Helper_Map):下記構造の

supervisor_id  helper_id 
____________________________ 
1     3 
1     4 
2     5 
2     6 

は私が欲しいデータを可能であれば、単一のクエリで、例えば、。

Supervisor_id Supervisor_name helper_id  helper_name 
_______________________________________________________________ 
1     aaaa    3     cccc 
1     aaaa    4     dddd 
2     bbbb    5     eeee 
2     bbbb    6     ffff  
+0

ヘルパーは雇用のですか? – Whencesoever

+0

はい。ヘルパーも雇用主 – Srinivasan

答えて

1

を試してみてください。与えられたサンプルデータと

ワーキングデモ:

DECLARE @Employee TABLE (emp_id INT, emp_name VARCHAR (100), emp_role VARCHAR (100)); 

INSERT INTO @Employee (emp_id, emp_name, emp_role) VALUES 
(1, 'aaaa', 'Supervisor'), 
(2, 'bbbb', 'Supervisor'), 
(3, 'cccc', 'helper'), 
(4, 'dddd', 'helper'), 
(5, 'eeee', 'helper'), 
(6, 'ffff', 'helper'); 

DECLARE @Sup_Helper_Map TABLE (Supervisor_id INT, Helper_id INT); 

INSERT INTO @Sup_Helper_Map (Supervisor_id, Helper_id) VALUES 
(1, 3), 
(1, 4), 
(2, 5), 
(2, 6); 

SELECT M1.Supervisor_id, E1.emp_name AS Supervisor_name, 
     M1.Helper_id, E2.emp_name AS Helper_name 
FROM @Sup_Helper_Map M1 
JOIN @Employee E1 ON E1.emp_id = M1.Supervisor_id 
JOIN @Employee E2 ON E2.emp_id = M1.Helper_id 

結果:

Supervisor_id Supervisor_name Helper_id Helper_name 
-------------------------------------------------------- 
1    aaaa   3   cccc 
1    aaaa   4   dddd 
2    bbbb   5   eeee 
2    bbbb   6   ffff 
0

あなたは単にあなたの予想される結果を得るために2回Employeeのテーブルを結合することができ、この

SELECT 
    s.supervisor_id, 
    e.emp_name supervisor_Name, 
    s.helper_id, 
    h.emp_name helper_name 
FROM 
    emp e INNER JOIN 
    Sup_Helper_Map s ON e.emp_id = s.supervisor_id INNER JOIN 
    emp h ON s.helper_id = h.emp_id 
0
SELECT  dbo.Sub_Helper_Map.supervisor_id, emp1_1.emp_name AS Supervisor_name, dbo.Sub_Helper_Map.helper_id, dbo.emp.emp_name AS helper_name 
FROM   dbo.emp INNER JOIN 
         dbo.Sub_Helper_Map ON dbo.emp.emp_id = dbo.Sub_Helper_Map.helper_id INNER JOIN 
         dbo.emp AS emp1_1 ON dbo.Sub_Helper_Map.supervisor_id = emp1_1.emp_id