题解 | #获取所有非manager员工当前的薪水情况#

获取所有非manager员工当前的薪水情况

http://www.nowcoder.com/practice/8fe212a6c71b42de9c15c56ce354bebe

报错1
每个派生表必须有自己的别名
select de.dept_no
, de.emp_no
, sa.salary
from
    (select de.dept_no
    , de.emp_no
    , dm.emp_no
    from dept_emp de
    left join dept_manager dm
    on de.dept_no=dm.dept_no
    where de.to_date='9999-01-01'
    and dm.to_date='9999-01-01')
join salary sa 
on de.emp_no=sa.emp_no
where sa.to_date='9999-01-01'
and dm.emp_no!=sa.emp_no
通过1
1.将子查询进行别名
2.猜测de.emp_no和dm.emp_no在子表里都显示为emp_no,故将dm.emp_no别名为m
3.考虑到部门可能没有经理,所以将部门员工关系表左连接经理表,保证员工不会被内连接删掉,连接部门字段产生的null值,也满足and m!=sa.emp_no
, sa.salary
from
    (select de.dept_no
    , de.emp_no
    , dm.emp_no m
    from dept_emp de
    left join dept_manager dm
    on de.dept_no=dm.dept_no
    where de.to_date='9999-01-01'
    and dm.to_date='9999-01-01')a
join salaries sa 
on a.emp_no=sa.emp_no
where sa.to_date='9999-01-01'
and m!=sa.emp_no



全部评论

相关推荐

重生2012之我是java程序员:换个稍微正式点的照片吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务