数据库SQL实战
2017-08-03 16:53
218 查看
题目描述
获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,当前表示to_date='9999-01-01'。结果第一列给出当前员工的emp_no,第二列给出其manager对应的manager_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 `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`));
输入描述:
无
输出描述:
emp_no | manager_no |
---|---|
10001 | 10002 |
10003 | 10004 |
10009 | 10010 |
1、用inner join连接两张表,因为要输出自己的经理,得知自己与经理的部门要相同,故有限制条件 e.dept_no =
m.dept_no
2、再用where限制经理的条件,即 m.to_date 等于 '9999-01-01' 与 e.emp_no 不等于m.emp_no
3、为了增强代码可读性,将dept_emp用别名e代替,dept_manager用m代替,最后根据题意将e.emp_no用别名manager_no代替后输出
select e.emp_no,m.emp_no as manager_no #将m.emp_no改成manager_no
from dept_emp e inner join dept_manager m
on e.dept_no = m.dept_no
where e.emp_no <> m.emp_no
and e.to_date = '9999-01-01'
and m.to_date = '9999-01-01'
方法2:
select e.emp_no,m.emp_no as manager_no #将m.emp_no改成manager_no
from dept_emp e, dept_manager m
where e.dept_no = m.dept_no
and e.emp_no != m.emp_no
and e.to_date = '9999-01-01'
and m.to_date = '9999-01-01'
相关文章推荐
- sql 2005数据库加密实战
- 数据库SQL实战-答案解析(15-20)
- 数据库整合数据报表SQL实战
- 【数据库SQL实战】查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
- SQL实战日记--数据库文件还原问题排查
- 迁移 SQL Server 数据库到 Azure SQL 实战
- 4000 【数据库SQL实战】查找所有员工入职时候的薪水情况
- mybatis实战之路,疯狂的数据库操作框架、动态sql实现CRUD及带条件的增CRUD
- <实战>oracle 数据库的sql语句中 ‘&’ 符号的处理
- 【软件自动化测试-QTP实战技能 3】== 数据库检查点手动SQL写法
- 数据库SQL实战
- 【数据库SQL实战】查找当前薪水详情以及部门编号dept_no
- 实战SQL 2008 数据库镜像功能
- 数据库SQL实战
- 数据库SQL实战
- 牛客:数据库SQL实战(一)查询入职最晚的员工的所有信息
- 【数据库SQL实战】找出所有员工当前具体的薪水情况
- 数据库SQL实战-答案解析(1-15)
- 迁移 SQL Server 数据库到 Azure SQL 实战
- 数据库SQL实战练习(上)