题目描述
获取所有部门当前(dept_manager.to_date=‘9999-01-01’)manager的当前(salaries.to_date=‘9999-01-01’)薪水情况,给出dept_no, emp_no以及salary,输出结果按照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`));
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`));
解题思路
1.题目要求输出属性dept_no, emp_no以及salary不在一个表中,因此要联接两个表
2.对联接后的表用WHERE语句筛选出符合dept_manager.to_date='9999-01-01’和salaries.to_date='9999-01-01’的表项
3.用ORDER BY对筛选出的表项进行排序
参考代码
SELECT D.dept_no, D.emp_no, S.salary
FROM dept_manager AS D INNER JOIN salaries AS S
ON D.emp_no = S.emp_no
WHERE D.to_date='9999-01-01'
AND S.to_date='9999-01-01'
ORDER BY D.dept_no