天天看點

MySQL練習是一:查找目前薪水詳情以及部門編号dept_no

題目:

有一個全部員工的薪水表salaries簡況如下:

MySQL練習是一:查找目前薪水詳情以及部門編号dept_no

C7D94B6C9124C45835451E89458FFC3E

有一個各個部門的上司表dept_manager簡況如下:

MySQL練習是一:查找目前薪水詳情以及部門編号dept_no

24EC0AAEA6EF7D01BD63D4F9CCFC42BF

請你查找各個部門目前上司的薪水詳情以及其對應部門編号dept_no,輸出結果以salaries.emp_no升序排序,并且請注意輸出結果裡面dept_no列是最後一列,以上例子輸出如下:

MySQL練習是一:查找目前薪水詳情以及部門編号dept_no

4AD4F3D1E977477D6DF98854EC10149D

表結構:資料表

drop table if exists  `salaries` ; 
drop table if exists  `dept_manager` ; 
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,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
           

複制

模拟資料:

INSERT INTO dept_manager VALUES('d001',10002,'9999-01-01');
INSERT INTO dept_manager VALUES('d002',10006,'9999-01-01');
INSERT INTO dept_manager VALUES('d003',10005,'9999-01-01');
INSERT INTO dept_manager VALUES('d004',10004,'9999-01-01');
INSERT INTO salaries VALUES(10001,88958,'2002-06-22','9999-01-01');
INSERT INTO salaries VALUES(10002,72527,'2001-08-02','9999-01-01');
INSERT INTO salaries VALUES(10003,43311,'2001-12-01','9999-01-01');
INSERT INTO salaries VALUES(10004,74057,'2001-11-27','9999-01-01');
INSERT INTO salaries VALUES(10005,94692,'2001-09-09','9999-01-01');
INSERT INTO salaries VALUES(10006,43311,'2001-08-02','9999-01-01');
INSERT INTO salaries VALUES(10007,88070,'2002-02-07','9999-01-01');
           

複制

解題思路:

  1. 此題是查詢部門上司的薪資流水表。是以我們以薪資流水為主表,去比對部門上司表,如果存在部門上司就查詢薪資流水,沒有就不查詢,是以考慮使用内連接配接查詢。
  2. 這裡查詢的是目前的時間,是以需要考慮到這一點。

參考答案:

select a.*, b.dept_no from salaries  a inner join dept_manager b 
on a.emp_no = b.emp_no
where a.to_date = '9999-01-01'
order by a.emp_no asc;
           

複制