【发布时间】:2019-03-08 23:22:28
【问题描述】:
如果 emp_no(员工编号)在 dept_emp 中恰好存在 2 次,我正在尝试从员工数据库中获取 first_name 和 last_name。
员工数据库包括:员工、部门、dept_manager、dept_emp、职称、薪水。
USE employees;
SELECT emps.first_name,emps.last_name
FROM employees emps INNER JOIN
employees.dept_emp dm
ON emps.emp_no = dm.emp_no INNER JOIN
employees.titles t
ON t.emp_no = emps.emp_no INNER JOIN
employees.departments d
ON d.dept_no = dm.dept_no
HAVING COUNT(dm.emp_no) = 2
来自 dept_emp 的示例,其中第一个值为 emp_no :
(10045,'d004','1996-11-16','9999-01-01'),
(10046,'d008','1992-06-20','9999-01-01'),
(283344,'d001','1996-05-08','1997-11-25'),
(283344,'d009','1997-11-25','9999-01-01'),
员工表:
CREATE TABLE employees (
emp_no INT NOT NULL,
birth_date DATE NOT NULL,
first_name VARCHAR(14) NOT NULL,
last_name VARCHAR(16) NOT NULL,
gender ENUM ('M','F') NOT NULL,
hire_date DATE NOT NULL,
PRIMARY KEY (emp_no)
dept_emp 表:
CREATE TABLE dept_emp (
emp_no INT NOT NULL,
dept_no CHAR(4) NOT NULL,
from_date DATE NOT NULL,
to_date DATE NOT NULL,
FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,
FOREIGN KEY (dept_no) REFERENCES departments (dept_no) ON DELETE CASCADE,
PRIMARY KEY (emp_no,dept_no)
所需的输出:如果 emp_no 在 dept_emp 中恰好出现两次,则为 first_name 和 last_name
【问题讨论】:
-
“期望的输出:如果 emp_no 在 dept_emp 中恰好出现两次,则为 first_name 和 last_name”你的意思是两个不同的 emp_no 编号还是无关紧要?