秋招SQL实战 :11.获取所有员工当前的manager,如果当前的manager是自己的话结果不显示

(秋招SQL实战 :11.获取所有员工当前的manager,如果当前的manager是自己的话结果不显示

题目描述:

获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,当前表示to_date='9999-01-01'。
结果第一列给出当前员工的emp_no,第二列给出其manager对应的manager_no。
CREATE TABLE dept_emp (
emp_no int(11) NOT NULL,
dept_no char(4) NOT NULL,
from_date date NOT NULL,
to_date date NOT NULL,
PRIMARY KEY (emp_no,dept_no));
CREATE TABLE dept_manager (
dept_no char(4) NOT NULL,
emp_no int(11) NOT NULL,
from_date date NOT NULL,
to_date date NOT NULL,
PRIMARY KEY (emp_no,dept_no));
输入描述:

输出描述:

emp_no manager_no
10001 10002
10003 10004
10009 10010

题目解析:

解法:

select de.emp_no,dm.emp_no as manager_no
from dept_emp as de 
inner join dept_manager as dm
on de.dept_no = dm.dept_no
where de.to_date = '9999-01-01'
and dm.to_date = '9999-01-01'
and de.emp_no <> dm.emp_no;

注:

1、用inner join 连接两张表,因为要输出自己的经理,得知自己与经理的部门要相同,故有限制条件 de.dept_no = dm.dept_no
2、再用 where 限制当前员工与当前经理的条件,即 dm.to_date 等于 '9999-01-01' 、de.to_date 等于 '9999-01-01' 、 de.emp_no 不等于 dm.emp_no

你可能感兴趣的:(秋招SQL实战 :11.获取所有员工当前的manager,如果当前的manager是自己的话结果不显示)