oracleskill

Home TUTORIAL Performing Joins Using the SQL/92 Syntax (Part 2/2)

Performing Joins Using the SQL/92 Syntax (Part 2/2)
share

Inner-Join

SQL/86 

SELECT e.ename,d.dname
FROM emp e , dept d
WHERE e.deptno = d.deptno ;

SQL/92

SELECT e.ename,d.dname
FROM emp e INNER JOIN dept d
ON e.deptno = d.deptno ;  
 

 

Non-equi join

SQL/86

SELECT e.ename,e.job,e.sal,sg.grade
FROM emp e , salgrade sg
WHERE e.sal BETWEEN sg.losal AND sg.HISAL ;

SQL/92

SELECT e.ename,e.job,e.sal,sg.grade
FROM emp e INNER JOIN salgrade sg
ON e.sal BETWEEN sg.losal AND sg.HISAL ;
 

 

Left outer join

SQL/86

SELECT d.department_id,e.last_name
FROM departments d , employees e
WHERE d.department_id= e.department_id(+)
ORDER by d.department_id ;

SQL/92

SELECT d.department_id,e.last_name
FROM departments d LEFT OUTER JOIN employees e
ON d.department_id = e.department_id
ORDER by d.department_id ;

หรือ จะใช้ keyword USING ก็ได้ แต่ให้สังเกตว่า ถ้า column ที่อยู่ภายในวงเล็บ USING(...) ไปปรากฎ อยู่ใน SELECT หรือ ORDER BY จะไม่มีชื่อ alias นำ (d.department_id หรือ e.department_id) ให้ใส่เป็นชื่อ column ไปเลย ตัวอย่างเช่น

SELECT department_id,e.last_name
FROM departments d LEFT OUTER JOIN employees e
USING (department_id)
ORDER by department_id ;
 

 

Right outer join

SQL/86

SELECT d.department_id,e.last_name
FROM departments d , employees e
WHERE d.department_id(+) = e.department_id
ORDER by d.department_id ;

SQL/92

SELECT d.department_id,e.last_name
FROM departments d RIGHT OUTER JOIN employees e
ON d.department_id = e.department_id
ORDER by d.department_id ;

หรือจะใช้ keyword USING ก็ได้เช่นกัน

 


 

Full outer join

SQL/86
ไม่มี ยังไม่ support full outer join

SQL/92

SELECT d.department_id,e.last_name
FROM departments d FULL OUTER JOIN employees e
ON d.department_id = e.department_id
ORDER by d.department_id ;

หรือจะใช้ keyword USING ก็ได้เช่นกัน

 


 

Self Join

SQL/86

SELECT e.ename as "worker_name" , m.ename as "manager_name"
FROM emp e , emp m
WHERE e.mgr = m.empno

SQL/92

SELECT e.ename as "worker_name" , m.ename as "manager_name"
FROM emp e INNER JOIN emp m
ON e.mgr = m.empno ;

 

<< กลับไปก่อนหน้า

share