21_MySQL表外连接实战

-- 查询每名员工的编号、姓名、部门、月薪、工资等级、工龄、上司编号、上司姓名、上司部门?

SELECT
    e.empno,#员工编号
    e.ename,#员工姓名
    e.deptno,#员工部门
    e.sal + IFNULL(e.comm, 0) AS income,#月薪
    DATEDIFF(NOW( ), e.hiredate) / 365 AS seniority,#工龄
    s.grade,#工资等级
    e.mgr,#上司编号
    e2.ename AS mgrname,#上司姓名
    d.dname #上司部门
FROM
    t_emp e #员工表e
    JOIN t_salgrade s ON (e.sal + IFNULL( e.comm, 0 )) BETWEEN s.losal AND s.hisal #与工资等级表关联
    LEFT JOIN t_emp e2 ON e.mgr = e2.empno 
    #与员工表e2关联,获取上司信息,因为King没有上司,为保留完整信息,采取左连接
    LEFT JOIN t_dept d ON e2.deptno = d.deptno; 
    #与部门表d关联,获取上司部门信息,因为陈浩没有部门编号,为保留完整信息,采取左连接

 

原文地址:https://www.cnblogs.com/waterr/p/13958717.html