【數據庫】獲取所有部門當前manager的當前薪水情況,給出dept_no, emp_no以及salary,當前表示to_date='9999-01-01'

**

題目描述

**
獲取所有部門當前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的篩選的話出現多條衝突吧,大概意思就是(約束強在前,約束弱在後)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章