使用oracle對scoot使用者中查詢員工工資等級的問題

2013-04-11 5:39 am
我現在要對oracle資料庫中scoot下預設就存在的兩個表emp(員工表),salgrade(工資等級表)進行查詢,排列出員工姓名、工資、工資等級
這是emp表中的內容
Ename(員工姓名)sal(工資)

SQL> select * from emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980-12-17 800.00 20
7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30
7566 JONES MANAGER 7839 1981-4-2 2975.00 20
7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30
7782 CLARK MANAGER 7839 1981-6-9 2450.00 10
7788 SCOTT ANALYST 7566 1987-4-19 3000.00 20
7839 KING PRESIDENT 1981-11-17 5000.00 10
7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30
7876 ADAMS CLERK 7788 1987-5-23 1100.00 20
7900 JAMES CLERK 7698 1981-12-3 950.00 30
7902 FORD ANALYST 7566 1981-12-3 3000.00 20
7934 MILLER CLERK 7782 1982-1-23 1300.00 10
這是salgrade表重的內容。Grade(工資等級)、losal(工資等級中的最低) hisal(工資等級中的最高)比如收錄在800就是在grade 1中
SQL> select * from salgrade;

GRADE LOSAL HISAL
---------- ---------- ----------
1 700 1200
2 1201 1400
3 1401 2000
4 2001 3000
5 3001 9999
我用這個語句列出員工名字、工資、員工工資等級,卻沒有辦法列出來
SQL> select emp.ename,emp.sal,salgrade.grade from emp,salgrade where emp.sal between salgrade.hisal and salgrade.losal;

ENAME SAL GRADE
---------- --------- ----------
大家覺得我問題出在哪裡?

回答 (1)

2013-04-11 4:14 pm
✔ 最佳答案
between 是把小的放在前面

你改成

select emp.ename,emp.sal,salgrade.grade from emp,salgrade where emp.sal between salgrade.losal and salgrade.hisal;

就可以了


收錄日期: 2021-04-13 19:24:48
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20130410000015KK04747

檢視 Wayback Machine 備份