码迷,mamicode.com
首页 > 其他好文 > 详细

查询曾经在所有部门【department】都工作过的雇员【employees】的编号和姓名

时间:2020-02-10 18:25:21      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:姓名   一个   rom   没有   ==   工作   exist   rtm   数据库表   

题目解读:

此题涉及到的数据库表:【departments -- 部门信息】、【dept_emp -- 部门_员工 关系表】、【employees -- 员工信息】

方法一:not exists

  1. 思路
    查找符合下列条件的雇员:不存在一个部门,雇员没有在该部门工作过;
  2. sql 语句
    select emp_no, -- 方法1
    first_name,
    last_name
    from employees
    where not exists( -- 不存在这样的部门
    select *
    from departments
    where not exists( -- 员工没有工作过
    select *
    from dept_emp
    where departments.dept_no=dept_emp.dept_no and
    dept_emp.emp_no=employees.emp_no));
    方法二:简单的逻辑
  3. 思路
    查找符合下列条件的雇员:雇员工作过的部门数 == 所有的部门数
  4. sql 语句
    select employees.emp_no, -- 方法2
    first_name,
    last_name
    from employees,
    dept_emp
    where employees.emp_no=dept_emp.emp_no
    group by emp_no
    having count() = (
    select count(
    )
    from departments);

查询曾经在所有部门【department】都工作过的雇员【employees】的编号和姓名

标签:姓名   一个   rom   没有   ==   工作   exist   rtm   数据库表   

原文地址:https://www.cnblogs.com/ggyzzz/p/12291768.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!