有一个员工表dept_emp如下:
第一行表示为员工编号emp_no为10001的部门dept_no是d001部门。
有一个部门经理表dept_manager如下:
第一行表示为部门编号为d001部门的经理是编号为10002的员工。
问题:获取所有的员工和员工对应的经理,如果员工本身是经理的话则不显示,以上例子如下:
代码求解
- 首先确定需要输出的对象
获取所有的员工和员工对应的经理,如果员工本身是经理的话则不显示。
第一列:员工编号
第二列:经理的员工编号
将员工表和经理表内部联结,联结条件是员工表的部门编号等于经理表的部门编号 - 给表起别名,简化代码
- 使用内部联结,inner join… on …
- 筛选条件是员工本身是经理的不显示,即在联结表中只选择员工表中提取的员工编号与经理表中的经理编号不相同的行
select e.emp_no,m.emp_no as manager
from dept_emp as e
inner join dept_manager as m
on e.dept_no = m.dept_no
where e.emp_no != m.emp_no
and e.to_date = '9999-01-01'
and m.to_date = '9999-01-01';