Oracle的多表查询----------内连接

/*

   语法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;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值