**
題目描述
**
獲取所有部門當前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
));
思路:
兩表連接的查詢的話一定要注意約束條件,一開始的時候想錯約束條件一直出錯,用了近一個小時才解決,這個成本太高了,以後一定要記住!記住!記住!
代碼:
select dept_manager.dept_no,dept_manager.emp_no,salaries.salary
from salaries inner join dept_manager
on dept_manager.emp_no = salaries.emp_no
and salaries.to_date='9999-01-01'
and dept_manager.to_date='9999-01-01'
**初始版:無法通過編譯**
select salaries.salary,dept_manager.dept_no,dept_manager.emp_no
from salaries inner join dept_manager
on dept_manager.emp_no = salaries.emp_no
and salaries.to_date='9999-01-01'
and dept_manager.to_date='9999-01-01'
總結:
select salaries.salary,dept_manager.dept_no,dept_manager.emp_no 進行編譯的時候會發生錯誤,大概思考了一下,應該是先進行salary選擇的話會出現多條語句,然後在進行dept_no和emp_no的篩選的話出現多條衝突吧,大概意思就是(約束強在前,約束弱在後)