根据同一个表中的其他字段从一个字段中检索值

时间:2013-07-04 14:01:51

标签: sql nested inner-join

我有两个表,我需要一个最终表,它使用第一个表的字段从同一个表中获取其他字段值。 表1-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

表2-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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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