前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL练习十五:查询员工的部门领导编号和自身的编号

MySQL练习十五:查询员工的部门领导编号和自身的编号

原创
作者头像
Mandy的名字被占用了
修改2021-09-30 10:17:48
3.1K0
修改2021-09-30 10:17:48
举报

题目:

有一个员工表dept_emp简况如下:

FA1C2D23763EBC6A14D7AF61064202ED
FA1C2D23763EBC6A14D7AF61064202ED

第一行表示为员工编号为10001的部门是d001部门。

有一个部门经理表dept_manager简况如下:

B680BD38752346E644806C4BFAFACB0C
B680BD38752346E644806C4BFAFACB0C

第一行表示为d001部门的经理是编号为10002的员工。

获取所有的员工和员工对应的经理,如果员工本身是经理的话则不显示,以上例子如下:

C23E2BE72621CF021B0A53D9F763989B
C23E2BE72621CF021B0A53D9F763989B

数据表:

表结构

代码语言:txt
复制
drop table if exists  `dept_emp` ; 
drop table if exists  `dept_manager` ; 
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 `dept_manager` (
`dept_no` char(4) NOT NULL,
`emp_no` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));

数据:

insert语句

代码语言:txt
复制
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','1995-12-03','9999-01-01');
INSERT INTO dept_manager VALUES('d001',10002,'1996-08-03','9999-01-01');
INSERT INTO dept_manager VALUES('d002',10003,'1990-08-05','9999-01-01');

解题思路:

1、首先明确是查询员工的部门领导,部门领导的编号又在部门表中,这时候直接去查询到部门就可以得到部门信息,从而可以得到部门领导的编号。

2、考虑到如果员工属于部门领导的数据不查询出来,针对这种数据做一个过滤即可。

参考答案:

代码语言:txt
复制
# 推荐写法
SELECT a.emp_no, b.emp_no AS manager_no 
FROM dept_emp AS a INNER JOIN dept_manager AS b
ON a.dept_no = b.dept_no 
WHERE b.to_date = '9999-01-01' AND a.to_date = '9999-01-01' AND a.emp_no <> b.emp_no

# 个人写法。
SELECT e.emp_no, m.emp_no AS manager
FROM dept_emp e LEFT JOIN dept_manager m 
ON e.dept_no = m.dept_no
WHERE e.emp_no <> m.emp_no

此题在牛客网上存在一点争议,推荐写法根据评论,在原题上是有考虑在职和不在职的情况。不过两种方式够给通过了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档