首页 > 试题广场 >

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

[编程题]查找所有员工的last_name和first_name以及对
  • 热度指数:353137 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个员工表employees简况如下:
emp_no
birth_date
first_name
last_name
gender hire_date
10001
1953-09-02
Georgi
Facello
M 1986-06-26
10002
1964-06-02
Bezalel
Simmel
F 1985-11-21
10003
1959-12-03
Parto
Bamford
M 1986-08-28
10004
1954-05-01
Chirstian
Koblick
M 1986-12-01


有一个部门表departments表简况如下:
dept_no dept_name
d001 Marketing
d002
Finance
d003
Human Resources


有一个,部门员工关系表dept_emp简况如下:
emp_no
dept_no
from_date
to_date
10001 d001
1986-06-26 9999-01-01
10002 d001
1996-08-03 9999-01-01
10003 d002
1990-08-05 9999-01-01


请你查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工,以上例子输出如下:
last_name first_name dept_name
Facello Georgi Marketing
Simmel Bezalel Marketing
Bamford Parto Finance
Koblick Chirstian NULL
示例1

输入

drop table if exists  `departments` ; 
drop table if exists  `dept_emp` ; 
drop table if exists  `employees` ; 
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`));
INSERT INTO departments VALUES('d001','Marketing');
INSERT INTO departments VALUES('d002','Finance');
INSERT INTO departments VALUES('d003','Human Resources');
INSERT INTO dept_emp VALUES(10001,'d001','1986-06-26','9999-01-01');
INSERT INTO dept_emp VALUES(10002,'d001','1996-08-03','9999-01-01');
INSERT INTO dept_emp VALUES(10003,'d002','1990-08-05','9999-01-01');
INSERT INTO employees VALUES(10001,'1953-09-02','Georgi','Facello','M','1986-06-26');
INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21');
INSERT INTO employees VALUES(10003,'1959-12-03','Parto','Bamford','M','1986-08-28');
INSERT INTO employees VALUES(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01');

输出

Facello|Georgi|Marketing
Simmel|Bezalel|Marketing
Bamford|Parto|Finance
Koblick|Chirstian|None
头像 牛客题解官
发表于 2025-03-17 11:27:00
精华题解 这道题目要求我们从员工表中查找所有员工的信息,我们要做的事情如下: 1. 确定总体问题 我们需要从员工表、部门员工关系表和部门表中提取数据查找所有员工的姓、名以及他们所属的部门名称,包括那些暂时没有分配部门的员工,并通过员工编号和部门编号进行连接。 2. 分析关键问题 连接表:将employees 展开全文
头像 N刻后告诉你
发表于 2020-05-19 20:33:55
题目:查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工 方法1:先内连接departments表和dept_emp表形成新表b,再左连接employees表和b表SELECT e.last_name, e.first_name, b.d 展开全文
头像 数据分析阿宇君
发表于 2020-08-21 15:58:40
select e.last_name,e.first_name,d.dept_name from employees e left join dept_emp de on e.emp_no=de.emp_no left join departments d on de.dept_no=d.dept_ 展开全文
头像 Karaa
发表于 2020-03-14 16:03:38
题目有三个表: 【部门的信息】departments: dept_no, dept_name 【部门员工所属】dept_emp: emp_no, dept_no,... 【员工的信息】employees: emp_no, first_name, last_name,... 题目要求:思路: 列 展开全文
头像 喝杯Java不香吗
发表于 2021-10-01 15:01:38
方法一,三表左连接: select e.last_name, e.first_name, dm.dept_name from employees e left join dept_emp d on e.emp_no = d.emp_no left join departments dm on d 展开全文
头像 searth
发表于 2021-03-15 10:55:23
查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工 先根据员工编号匹配到部门编号,再通过部门编号匹配到部门名,两次左连接。 select e.last_name,e.first_name,de.dept_name from employe 展开全文
头像 数据流动DataFlow
发表于 2023-03-12 23:43:30
方法一:思路:用两次左外连接,然后查询返回 last_name,first_name,dept_name代码: select last_name, first_name, dept_name from employees e left join dept_em 展开全文
头像 高质量搬砖人
发表于 2021-01-29 16:20:43
方法)要求连结employees表的全部行 包括暂时没有分配部门的员工 SELECT e.last_name, e.first_name, d.dept_name FROM departments AS d 展开全文
头像 jiang_dr
发表于 2021-10-09 14:37:46
思路:这是一个典型的多表连接,值得注意的是未分配部门员工也需要展示,这就要考虑使用什么连接方式。这里使用两次左连接来实现。 完整代码: select e.last_name, e.first_name, d.dept_name from (employees e left join dept_emp 展开全文
头像 刷题的小蜗牛
发表于 2021-07-06 11:51:02
首先,我们先审题:查找所有员工的last_name和first_name,说明我们要以employees表中的信息为主,即查询信息的过程中有主表与副表之分,所以要用到外连接。其次,我们拆解题目,先找出每一个员工所在的部门名称,这个就很简单了。注意:这里只查询有分配部门的员工。我们利用dept_emp 展开全文
头像 牛萍萍
发表于 2021-09-14 16:22:47
标答中有员工基本信息,但是没部门号,说明是对员工表进行左连接。employees 和 departments 没有交点。所以需要 dept_emp 来做个工具人的身份把他们连起来。 select e.last_name, e.first_name, dp.dept_name from employe 展开全文