秋招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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容