Anda di halaman 1dari 4

chapter 4: joining Tables( retreive data from more than one table )

--------------------------------------------------------------------What is join ?
-------------1)cross Product:
---------------Example:
--------select empno,ename,sal,job,dname, loc
from emp , dept ;
select empno , sal, job , dname , loc
from
emp cross join dept ;
2)Equi-join (inner join)( get only matched rows)
--------------------------------------------------2.1 )Example:
................
select empno , ename , sal, job , dname , loc
from emp , dept
where emp.deptno = dept.deptno ;
2.2 Natural Example
------------------select empno , ename , sal, job , dname , loc
from emp natural join dept ;
2.3 Using Example
----------------select empno , ename , sal, job , dname , loc
from emp join dept
using ( deptno );
2.4) on Example
--------------select empno , ename , sal, job , dname , loc
from emp join dept
on ( emp.deptno=dept.deptno );
3)non-equijoin
-------------select empno , ename , job , sal , grade , losal , hisal
from emp , salgrade
where sal between losal and hisal ;
select
from
on

empno , ename , job , sal , grade , losal , hisal


emp join salgrade
(sal between losal and hisal );

4) outer join (get matched and not matched rows):


------------------------------------------------4.1 ) left outer join
----------------------select empno , ename , dname , loc
from emp left outer join dept
on (emp.deptno = dept.deptno) ;
4.2) right outer join
----------------------

select empno , ename , dname , loc


from emp right outer join dept
on (emp.deptno = dept.deptno) ;
4.3 ) full outer join
--------------------select empno , ename , dname , loc
from emp full outer join dept
on (emp.deptno = dept.deptno) ;
select empno , ename , sal, job , dname , loc
from emp , dept
where ( emp.deptno (+) = dept.deptno );
select empno , ename , sal, job , dname , loc
from emp , dept
where ( emp.deptno = dept.deptno (+) );
5) Self join :
------------select w.empno , w.ename , w.job , w.sal , w.mgr , m.ename as manager_name
from emp w join emp m
on ( w.mgr = m.empno ) ;
select w.empno , w.ename , w.job , w.sal , w.mgr , m.ename as manager_name
from emp w left outer join emp m
on ( w.mgr = m.empno ) ;
6) joining more than two tables:
--------------------------------select first_name , last_name , department_name , city , street_address
from employees join departments on (employees.department_id =departments.depar
tment_id)
join locations on (departments.location_id = locations.locati
on_id) ;
to join n tables you need n-1 join condidtion .
7) additional conditions :
-------------------------select empno , ename , sal, job , dname , loc
from emp natural join dept
where job = 'SALESMAN' ;
select empno , ename , sal, job , dname , loc
from emp join dept
using ( deptno )
where sal > 2000
select empno , ename , sal, job , dname , loc
from emp join dept
on ( emp.deptno=dept.deptno )
and emp.deptno = 30 ;
select empno , ename , sal, job , dname , loc
from emp , dept
where ( emp.deptno=dept.deptno )
and emp.deptno = 30 ;
********************************************************************************

*
using sets:
----------syntax:
-------a = { 1 ,2, 3 }
b = { 2, 4, 5 }
a
a
a
a

union b
= { 1,2,3,4,5}
union all b = { 1,2,3,2,4,5}
intersect b = {2}
minus b
= {1,3}

select statement 1
union | union all | intersect | minus
select statement 2
Example:
-------select empno , ename
from emp
union
select deptno , dname
from dept ;
select empno , ename , job
from emp
Minus
select deptno , dname ,loc
from dept ;
select empno , ename , job
from emp
intersect
select deptno , dname ,loc
from dept ;
Matching columns
----------------select empno , ename , sal
from emp
union
select deptno , dname ,0
from dept ;
select empno , ename , ''
from emp
union
select deptno , dname ,loc
from dept ;
order by certain column
----------------------select empno , ename , sal
from emp
union
select deptno , dname , 0
from dept

order by ename
////////////////////////////////////////////////////////END/////////////////////
///////////////////////////////////////////

Anda mungkin juga menyukai