/*
語法1:
select *
from tab1,tab2
where 條件;
語法2:
select *
from tab1 inner join tab2
on 條件;
內連接查詢效果: 只有滿足條件的數據纔會顯示。
*/
-- 笛卡爾積 = 14*4= 56
-- 需求:查詢員工和部門數據
select *
from emp,dept;
-- 需求:查詢員工和部門數據
-- 語法1
selecte.empno,e.ename,d.deptno,d.dname
from emp e,dept d
where e.deptno = d.deptno;
-- 語法2
selecte.empno,e.ename,d.deptno,d.dname
from emp e innerjoin dept d
on e.deptno = d.deptno;
-- 案例
-- 需求:查詢員工及其上司信息
select e1.empno,e1.ename,e2.empno,e2.ename
from emp e1,emp e2
where e1.mgr = e2.empno;
-- 需求:在上面基礎上,查詢員工的部門信息
selecte1.empno,e1.ename,d1.deptno,d1.dname,e2.empno,e2.ename
from emp e1,emp e2,dept d1
where e1.mgr = e2.empno
and e1.deptno = d1.deptno;
-- 需求:在上面基礎上,查詢上司的部門信息
selecte1.empno,e1.ename,d1.deptno,d1.dname,e2.empno,e2.ename,d2.deptno,d2.dname
from emp e1,emp e2,dept d1,dept d2
where e1.mgr = e2.empno
and e1.deptno = d1.deptno
and e2.deptno = d2.deptno;
-- 需求:在上面基礎上,查詢員工的工資級別
selecte1.empno,e1.ename,d1.deptno,d1.dname,e1.sal,s1.grade,e2.empno,e2.ename,d2.deptno,d2.dname
from emp e1,emp e2,dept d1,deptd2,salgrade s1
where e1.mgr = e2.empno
and e1.deptno = d1.deptno
and e2.deptno = d2.deptno
and e1.sal between s1.losal and s1.hisal;
-- 需求:在上面基礎上,查詢上司的工資級別
select e1.empno,e1.ename,d1.deptno,d1.dname,e1.sal,s1.grade,e2.empno,e2.ename,d2.deptno,d2.dname,e2.sal,s2.grade
from emp e1,emp e2,dept d1,deptd2,salgrade s1,salgrade s2
where e1.mgr = e2.empno
and e1.deptno = d1.deptno
and e2.deptno = d2.deptno
and e1.sal between s1.losal and s1.hisal
and e2.sal between s2.losal and s2.hisal;
-- 需求:在上面基礎上,把員工的工資級別顯示爲"一級,二級,三級...."
selecte1.empno,e1.ename,d1.deptno,d1.dname,e1.sal,
decode(s1.grade,1,'一級',2,'二級',3,'三級',4,'四級') as員工工資級別
,e2.empno,e2.ename,d2.deptno,d2.dname,e2.sal,s2.grade
from emp e1,emp e2,dept d1,deptd2,salgrade s1,salgrade s2
where e1.mgr = e2.empno
and e1.deptno = d1.deptno
and e2.deptno = d2.deptno
and e1.sal between s1.losal and s1.hisal
and e2.sal between s2.losal and s2.hisal;
-- 需求:在上面基礎上,把上司的工資級別顯示爲"一級,二級,三級...."
selecte1.empno,e1.ename,d1.deptno,d1.dname,e1.sal,
decode(s1.grade,1,'一級',2,'二級',3,'三級',4,'四級') as員工工資級別
,e2.empno,e2.ename,d2.deptno,d2.dname,e2.sal,
decode(s2.grade,1,'一級',2,'二級',3,'三級',4,'四級',5,'五級') as上司工資級別
from emp e1,emp e2,dept d1,deptd2,salgrade s1,salgrade s2
where e1.mgr = e2.empno
and e1.deptno = d1.deptno
and e2.deptno = d2.deptno
and e1.sal between s1.losal and s1.hisal
and e2.sal between s2.losal and s2.hisal;
-------------------------------------------------------------------------------
select * from emp;
select * from dept;
select * from salgrade;