首页 > 试题广场 >

获取所有员工当前的manager

[编程题]获取所有员工当前的manager
  • 热度指数:486863 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个员工表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
1995-12-03 9999-01-01
第一行表示为员工编号为10001的部门是d001部门。

有一个部门经理表dept_manager简况如下:
dept_no
emp_no
from_date 
to_date
d001 10002
1996-08-03 9999-01-01
d002 10003
1990-08-05 9999-01-01
第一行表示为d001部门的经理是编号为10002的员工。

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

示例1

输入

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 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');

输出

10001|10002
头像 N刻后告诉你
发表于 2020-05-19 20:31:12
题目:获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,当前表示to_date=‘9999-01-01' INNER JOIN+不等于SELECT e.emp_no, m.emp_no AS manager_noFROM dept_emp AS eINNER JOIN 展开全文
头像 桐夏、
发表于 2021-04-13 15:34:54
我的想法很简单,直接使用内联结,找到两个表联结后emp_no不相等的数据 select e.emp_no,m.emp_no from dept_emp as e inner join dept_manager as m on e.dept_no=m.dept_no where e.emp_no!=m 展开全文
头像 不是江小白
发表于 2020-11-09 11:25:50
此题其实只要注意两个点就不会错: 要找当前员工对应的manager,就要符合这个条件👉 dept_manager.to_date='9999-01-01',这就是WHERE条件筛选之一; 如果当前的manager是自己的话结果不显示,这句话换个意思就是员工ID要不相等!即👉 dept_man 展开全文
头像 运气可以呀
发表于 2021-05-14 15:52:57
搞不明白你们的9999-1怎么想的没必要 select d.emp_no ,m.emp_no as managerfrom dept_emp dinner join dept_manager mon d.dept_no = m.dept_nowhere d.emp_no <>m 展开全文
头像 高质量搬砖人
发表于 2021-01-29 11:09:13
方法)两表联结 且 员工不为manager SELECT de.emp_no, dm.emp_no FROM dept_emp AS de LEFT JOIN dept_manager AS dm 展开全文
头像 已注销
发表于 2021-08-08 16:02:25
我把将要用到的sql基础知识点都总结在一起了, 我觉得先掌握知识点在刷sql会事半功倍, 请大家看一眼,觉的有用就拿去 想要在这里和csdn要家人们一个赞,球球了,卑微https://mp.csdn.net/mp_blog/creation/editor/119493449https:// 展开全文
头像 白伟仝
发表于 2020-06-26 18:47:12
select dept_emp.emp_no as emp_no, dept_manager.emp_no as manager_no from dept_emp, dept_manager where dept_emp.dept_no=dept_manager.dept_no and dept_e 展开全文
头像 数据分析阿宇君
发表于 2020-08-18 14:43:04
法一:WHERE 多条件限制 select de.emp_no,dm.emp_no as manager_no from dept_emp de,dept_manager dm where de.dept_no=dm.dept_no and de.emp_no!=dm.emp_no and d 展开全文
头像 李绍宇
发表于 2021-07-26 15:29:31
获取所有的员工和员工对应的经理,如果员工本身是经理的话则不显示 SELECT e.emp_no emp_no, m.emp_no manager FROM dept_emp e left JOIN dept_manager m ON e.dept_no = m.dept_no WHERE e.emp 展开全文
头像 阿莉勒丝黛拉
发表于 2022-03-17 19:46:47
SELECT   de.emp_no emp_no,   dm.emp_no manager FROM   dept_emp de   INNER JOIN dept_m 展开全文

问题信息

难度:
756条回答 41215浏览

热门推荐

通过挑战的用户

查看代码