数据库SQL实战
来源:互联网 发布:关系数据库中关系是指 编辑:程序博客网 时间:2024/06/06 18:36
题目描述
获取所有部门当前manager的当前薪水情况,给出dept_no, emp_no以及salary,当前表示to_date='9999-01-01'
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`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
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`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
输入描述:
无
输出描述:
dept_no emp_no salary d0011000272527d0041000474057d0031000594692d0021000643311d0061001094409
select d.dept_no,d.emp_no,s.salaryfrom salaries s join dept_manager don s.emp_no = d.emp_noand d.to_date = '9999-01-01'and s.to_date = '9999-01-01'
1、先用INNER JOIN连接两张表,限制条件是两张表的emp_no相同,即d.emp_no = s.emp_no,并且将salaries用别名s代替,dept_manager用别名d代替
2、根据题意,要获取当前manager的当前salary情况,再加上限制条件d.to_date = '9999-01-01' AND s.to_date = '9999-01-01'即可(因为同一emp_no在salaries表中对应多条涨薪记录,而当s.to_date = '9999-01-01'时是他当上manager时的记录)
使用where同样也可进行查询:
select d.dept_no,d.emp_no,s.salaryfrom salaries s, dept_manager dwhere s.emp_no = d.emp_noand d.to_date = '9999-01-01'and s.to_date = '9999-01-01'
阅读全文
0 0
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 数据库SQL实战
- 使用Sinopia搭建私有npm仓库不能下载带有@符号的包
- Redis的持久化-RDB和AOF
- 第一篇: 词向量之Word2vector原理浅析
- Oracle 12c 分片(Sharding)技术
- 触发消息的函数
- 数据库SQL实战
- Ubuntu 12.04 LTS 查看网关地址方法汇总
- 从“0”开始搭建个人博客(2)——Hexo的配置
- 浅谈自定义View的宽高获取
- 畅通工程
- 动画学习之Animate.css
- JavaScript中让方法延迟指定时间后再执行,以一定时间为间隔循环执行
- 【java设计模式】之 单例(Singleton)模式
- 【Linux】端口的分类、URG和PSH