#第一版 ,这是取出经理的薪水 # (select # mg_salary.dept_no, # mg_salary.emp_no, # mg_salary.salary # from # (select # manager_no.dept_no, # manager_no.emp_no, # sa.salary # from # (select # ede.emp_no, # dm.dept_no # from # (select # e.emp_no, # de.dept_no # from # employees e # inner join # dept_emp de # on # e.emp_no = de.emp_no) as ede # inner join # dept_manager dm # on # ede.emp_no = dm.emp_no) as manager_no # inner join # salaries sa # on # manager_no.emp_no = sa.emp_no) as mg_salary) #这是第二版 select yg.dept_no,yg.emp_no,yg.salary from (select de.dept_no,yuangong_no.emp_no,sa.salary from ((select em.emp_no from employees em where em.emp_no not in (select dm.emp_no from dept_emp de inner join dept_manager dm on de.emp_no = dm.emp_no)) as yuangong_no inner join dept_emp de on yuangong_no.emp_no = de.emp_no inner join salaries sa on yuangong_no.emp_no = sa.emp_no)) as yg
我一开始思路是从头直接内连接,然后这样找到就是经理的薪水,然后找到经理薪水之后,再用note in经理薪水,这样就可以取出员工的薪水。但是发现这样太复杂了。
第二次的思路: 我一开始就在部门表,和员工序号表当中,用员工序号内连接得到经理的序号, 然后 这一步就直接用not in,然后就可以取出员工的序号,剩下的思路就和 一开始一样, 用员工的序号类连接部门表、薪水表,就可以取出员工的所有信息。