数据库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`));

输入描述:

输出描述:

dept_noemp_nosalaryd0011000272527d0041000474057d0031000594692d0021000643311d0061001094409 


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'





原创粉丝点击