题目描述
获取所有员工当前的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
));
解决思路
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
- INNER JOIN 组合两个表中的记录,返回两个表的交集部分。
- WHERE 限制当前员工与当前经理的条件,即 dm.to_date 等于 ‘9999-01-01’ 、de.to_date 等于 ‘9999-01-01’ 、 de.emp_no 不等于 dm.emp_no(<>表示不等于)