查找所有员工的last_name和first_name以及对应的dept_name

题目描述
查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工
CREATE TABLE departments (
dept_no char(4) NOT NULL,
dept_name varchar(40) NOT NULL,
PRIMARY KEY (dept_no));
CREATE TABLE dept_emp (
emp_no int(11) NOT NULL,
dept_no char(4) NOT NULL,
from_date date NOT NULL,
to_date date NOT NULL,
PRIMARY KEY (emp_no,dept_no));
CREATE TABLE employees (
emp_no int(11) NOT NULL,
birth_date date NOT NULL,
first_name varchar(14) NOT NULL,
last_name varchar(16) NOT NULL,
gender char(1) NOT NULL,
hire_date date NOT NULL,
PRIMARY KEY (emp_no));

★★★解题思路:
这题是目前为止我遇到最头疼的一题,涉及到三张表的查询,首先运用employees表去左连接dept_emp表,这样就可以获得员工对应得dept_no,再次左连接departments表,获得对应得dept_name,有点绕,搞得不是很清楚。要在学习一下多表连接查询

代码:

SELECT em.last_name, em.first_name, dp.dept_name
FROM (employees AS em LEFT JOIN dept_emp AS de ON em.emp_no = de.emp_no)
LEFT JOIN departments AS dp ON de.dept_no = dp.dept_no

输出描述
查找所有员工的last_name和first_name以及对应的dept_name_第1张图片

你可能感兴趣的:(数据库)