查询曾经在所有部门department都工作过的雇员employees的编号和姓名
Posted ggyzzz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询曾经在所有部门department都工作过的雇员employees的编号和姓名相关的知识,希望对你有一定的参考价值。
题目解读:
此题涉及到的数据库表:【departments -- 部门信息】、【dept_emp -- 部门_员工 关系表】、【employees -- 员工信息】
方法一:not exists
- 思路
查找符合下列条件的雇员:不存在一个部门,雇员没有在该部门工作过; - 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));
方法二:简单的逻辑 - 思路
查找符合下列条件的雇员:雇员工作过的部门数 == 所有的部门数 - 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的编号和姓名的主要内容,如果未能解决你的问题,请参考以下文章