oracle 多表查询
Posted 唐僧还在拜佛求经路。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 多表查询相关的知识,希望对你有一定的参考价值。
实际上所谓的多表查询指的就是从多张数据表中取出数据并且显示的一种操作。
select * from scott.emp,dept.emp 笛卡尔积存在的原因
实际:
SELECT * FROM scott.emp e, scott.dept d WHERE e.deptno=d.deptno;
范例1:查询出每个雇员的编号,姓名、职位、基本工资、部门名称、部门位置。
·确定要使用的数据表:
-:emp表:编号,姓名、职位、基本工资、
-:detp表:部门名称、部门位置。
·确定已知的关联字段:
-:雇员与部门:emp.deptno=dept.deptno
第一步:查询出每个雇员的编号,姓名、职位、基本工资。
select e.empno,e.ename,e.job,e,sal from emp e;
第二步:查询出每个雇员对应的部门信息;需要引入dept表(引入表的时候一定考虑有关联),deptno字段关联,所以利用where子句消除笛卡尔积。
select e.empno,e.ename,e.job,e.sal,d.dname,d.loc
from scott.emp e, scott.dept d
where e.deptno=d.deptno;
范例2:查询出每个雇员的编号,姓名、职位、基本工资、工资等级。
select e.empno,e.ename,e.job,e.sal,s.grade
from scott.emp e,scott.salgrade s
where e.sal BETWEEN s.losal and s.hisal;
范例3:查询出每个雇员的编号,姓名、职位、基本工资、部门名称、工资等级。
确定所需要的数据表:
-:emp表:编号,姓名、职位、基本工资、
-:detp表:部门名称、
-:salgrade表:工资等级
确定已知的关联字段:
-:雇员与部门:emp.deptno-dept.deptno
-:雇员与工资等级;emp.sal BETWEEN salgrade.losal and salgrade.hisal
第一步:select e.empno,e.ename,e.job,e.sal
from emp e;
第二步:加入部门名称、增加一张表就增加一条消除笛卡尔积。
select e.empno,e.ename,e.job,e.sal,d.dname
from emp e,dept d
where e.deptno=d.deptno;
第三步:加入工资等级信息,与原始的
select e.empno,e.ename,e.job,e.sal,d.dname,s.grade
from emp e,dept d,salgrade s
where e.deptno=d.deptno and e.sal between s.losal and s.hisal;
以上是关于oracle 多表查询的主要内容,如果未能解决你的问题,请参考以下文章