首页 > 试题广场 >

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

[编程题]查找所有员工的last_name和first_name以及对
  • 热度指数:407959 时间限制: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
Christian  
Koblick   
 M 1986-12-01

有一个部门表,dept_emp简况如下:
emp_no
dept_no 
from_date 
to_date
10001 d001
1986-06-26 9999-01-01
10002 d002
1989-08-03 9999-01-01

请你查找所有已经分配部门的员工的last_name和first_name以及dept_no,也包括暂时没有分配具体部门的员工,以上例子如下:
last_name 
first_name 
dept_no
Facello    Georgi     
d001
Simmel     Bezalel    
d002
Bamford
Parto NULL
Koblick Chirstian NULL

示例1

输入

drop table if exists  `dept_emp` ; 
drop table if exists  `employees` ; 
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 dept_emp VALUES(10001,'d001','1986-06-26','9999-01-01');
INSERT INTO dept_emp VALUES(10002,'d002','1996-08-03','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|d001
Simmel|Bezalel|d002
Bamford|Parto|None
Koblick|Chirstian|None
头像 城志
发表于 2020-02-17 15:29:58
1. 分析 使用外部联结的左联结。内联结,两边表同时有对应的数据,即任何一边缺失数据就不显示。左联结,读取左边数据表的全部数据,即便右边表无对应数。即右表d中dept_no即使为NULL,也会读取左表e中的全部emp。 2. 代码 SELECT e.last_name, e.first_name, 展开全文
头像 菜鸡6666
发表于 2020-09-28 18:02:24
注意是大表(数据量多的)在前,使用外连接我在小米数据挖掘实习面试的过程中,面试官就问过两张表连接,是大表在前还是小表在前 select last_name,first_name,dept_no from employees a left join dept_emp b on a.emp_no=b.e 展开全文
头像 超671
发表于 2021-07-28 22:06:51
本题主要考察 连接的区别 代码如下 SELECT b.last_name, b.first_name, a.dept_no FROM dept_emp AS a right JOIN employees AS b ON a.emp_no = b.emp_no 展开全文
头像 Ding_123
发表于 2021-10-26 15:29:40
知识点 部分员工还没有分配到部门,因此不能使用内连接,使用左连接left join on确保员工没有缺失 代码 select last_name, first_name, dept_no from employees em left join dept_emp dm on em.emp_no = 展开全文
头像 ~Marienbader
发表于 2020-03-03 10:14:04
employees表里面的所有都显示,employees在左边所以 left join select e.last_name,e.first_name,d.dept_no from employees as e left join dept_emp as d on e.emp_no=d.emp_no
头像 N刻后告诉你
发表于 2020-05-19 20:28:47
题目:查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括暂时没有分配具体部门的员工 方法1:使用左连接select e.last_name, e.first_name, d.dept_nofrom employees as eleft join dept_e 展开全文
头像 牛客510042024号
发表于 2022-05-06 16:47:47
题目: 查找所有员工的last_name和first_name以及对应部门编号dept_no,而且包含未分配部门的员工, 也就说要读取员工表的所有信息,同时保留部门表信息,要使用外连接。 内连接:查询两表交集的记录 隐示内连接:select * from employees e, dept_emp 展开全文
头像 阿莉勒丝黛拉
发表于 2022-03-16 23:04:20
SELECT   last_name,   first_name,   dept_no FROM   employees   LEFT JOIN dept_emp USI 展开全文
头像 老表pro
发表于 2021-07-21 16:00:46
作者:老表-简说Python题目来源:https://www.nowcoder.com/ta/sql SQL4 查找所有已经分配部门的员工的last_name和first_name以及dept_no 我的思路: 直接通过emp_no连接两个表就可以啦,和上一个题几乎一样。 我的题解: select 展开全文
头像 Java编程白哥
发表于 2023-03-09 09:31:32
方法一:思路: 以 employees 为主表,使用左连接,连接条件为 e.emp_no = d.emp_no代码: select e.last_name,e.first_name,d.dept_no from employees e left join dept_emp d 展开全文