2013-07-04 4 views
0

У меня есть две таблицы, на основе которых мне нужна финальная таблица, которая использует поле первой таблицы для извлечения другого значения поля из той же таблицы. table1-emp_detailsполучить значение из одного поля на основе другого поля в той же таблице

emp_no emp_no_manager dept_no salary emp_name 
1    4  1  10000 emp1 
2    5  1  14000 emp2 
3    4  1  23000 emp3 
4    5  1  40000 emp4  
5    6  2  60000 emp5 
6      3  80000 emp6 

TABLE2-dept_details

dept_no dept_name 
1  it services 
2  consulting services 
3  procurement 
4  finance 
5  hr 

ожидаемый результат

emp_no emp_name manager_name dept_name   salary 
1  emp1  emp4  it services   10000 
2  emp2  emp5  it services  14000 
3  emp3  emp4  it services   23000 
4  emp4  emp5  it services   40000 
5  emp5  emp6  consulting services 60000 
6  emp6     procurement   80000 

ответ

0

Предполагая, что вы заинтересованы только в сотрудников непосредственного руководителя/линии, то я думаю, что это будет делать

SELECT 
    ed1.emp_no, 
    ed1.emp_name, 
    ed2.emp_name, 
    dd.dept_name, 
    ed1.salary 
FROM emp_details ed1 
JOIN emp_details ed2 ON ed2.emp_no = ed1.emp_no_manager 
JOIN dept_details dd ON dd.dept_no = ed1.dept_no 
1

Это основные операции JOIN. Сначала вы должны проверить некоторые учебники по SQL.

SELECT 
    e.emp_no 
    ,e.emp_name 
    ,m.emp_name AS manager_name 
    ,d.dept_name 
    ,e.salary 
FROM emp_details e 
LEFT JOIN emp_details m ON e.emp_no_manager = m.emp_no 
LEFT JOIN dept_details d ON e.dept_no = d.dept_no 

SQL Fiddle DEMO