Kamis, 26 Mei 2011

Tentang Equi Join dan Non-Equi Join

Alhamdulillah tulisan ini sempat dibuat karena ada teman yang bertanya tentang Equi Join dan Non-Equi Join, dan penulis rasa hal ini juga penting untuk diketahui mengingat SKRIPSI yang akan penulis buat ada kaitannya dengan JOIN (Semoga cepat selesai SKRIPSI-nya...:D). Selain itu ada temen-temen yang sedang melakukan riset dengan penulis dan beberapa risetnya berhubungan dengan JOIN...

Untuk lebih memahami JOIN kita akan menggunakan ERD dibawah ini :
SQL JOIN digunakan untuk mengambil informasi yang terkait pada satu atau lebih tabel. Secara garis besar JOIN dibagi menjadi Equi Join dan Non-Equi Join.

Equi Join merupakan Join yang menggunakan tanda equal (=) untuk membandingkan Operatornya. Secara garis besar Equi Joins terbagi menjadi
1.    Inner JOIN : JOIN yang hanya menampilkan data pada kolom yang sesuai dengan yang dibandingkan, tidak akan mengeluarkan nilai NULL pada kolom yang dibandingkan. Ada beberapa jenis JOIN pada Inner JOIN diantaranya :

Natural JOIN : bisa digunakan jika pada tabel yang di join terdapat kolom(atribut) yang memiliki nama yang sama dan type data yang sama. Pada waktu JOIN kolom tersebut secara otomatis akan digunakan untuk dibandingkan, dan kita tidak bisa menentukan kolom mana yang akan digunakan untuk dibandingkan. Jika natural join ini digunakan pada tabel yang ternyata memiliki kolom yang sama tetapi berbeda type data maka akan terjadi error.
Contohnya :
select FIRST_NAME, JOB_TITLE
from EMPLOYEES 
natural join JOBS;
Akan memberikan Output :

JOIN-USING : bisa digunakan jika pada tabel yang di join terdapat kolom yang memiliki nama yang sama untuk tipe data boleh sama boleh berbeda. Pada waktu JOIN kita bisa memilih kolom tertentu yang akan digunakan untuk dibandingkan, hal ini akan sangat berguna jika terdapat lebih dari satu kolom yang memiliki nama yang sama pada 2 tabel yang akan di JOIN
Contohnya :
select FIRST_NAME, JOB_TITLE
from EMPLOYEES 
join JOBS
using(JOB_ID);
Akan memberikan Output :


JOIN-ON : bisa digunakan walapun pada tabel yang di join tidak terdapat kolom yang memiliki nama yang sama, atau bisa menggunakan kolom dengan nama yang berbeda untuk dibandingkan ketika JOIN.
Contohnya :
select E.FIRST_NAME, J.JOB_TITLE
from EMPLOYEES E 
join JOBS J
on E.JOB_ID=J.JOB_ID;
Akan memberikan Output :

Atau bisa juga dengan syntax dibawah ini(karena JOIN dengan tabel yang sama bisa juga disebut SELF-JOIN)
select E.FIRST_NAME PEGAWAI, M.FIRST_NAME MANAGER
from EMPLOYEES E
join EMPLOYEES M
on E.MANAGER_ID=M.MANAGER_ID
Akan memberikan Output :

2.    Outer JOIN : tidak hanya menampilkan kolom yang sesuai dengan yang dibandingkan, tetapi juga kolom yang tidak sesuai dengan yang dibandingkan.

Left-Outer JOIN : akan menampilkan semua baris pada tabel yang terletak pada kiri syntax JOIN walapun tidak sesuai dengan tabel yang berada pada sebelah kanan JOIN.
Contohnya :
select E.FIRST_NAME, J.JOB_TITLE
from EMPLOYEES E 
left outer join JOBS J
on E.JOB_ID=J.JOB_ID;

Akan memberikan Output :

Right-Outer JOIN : akan menampilkan semua baris pada tabel yang terletak pada kanan syntax JOIN walapun tidak sesuai dengan tabel yang berada pada sebelah kiri JOIN.
Contohnya :
select E.FIRST_NAME, J.JOB_TITLE
from EMPLOYEES E 
right outer join JOBS J
on E.JOB_ID=J.JOB_ID;

Akan memberikan Output :

FULL-Outer JOIN : akan menampilkan semua baris pada tabel yang terletak pada kiri dan kanan syntax JOIN walapun tidak sesuai ketika dibandingkan.
Contohnya :
select E.FIRST_NAME, J.JOB_TITLE
from EMPLOYEES E 
full outer join JOBS J
on E.JOB_ID=J.JOB_ID;

Akan memberikan Output :


Non-Equi Join merupakan join yang menggunakan tanda selain equal (=), misalkan tanda !=, >, <, >=, <=, dll
Contohnya : 

select FIRST_NAME, SALARY, TAX_RATE
from EMPLOYEES
join TAX
on SALARY >= MIN_SALARY
and SALARY <= MAX_SALARY;

Atau

select FIRST_NAME, SALARY, TAX_RATE
from EMPLOYEES
join TAX
on SALARY between MIN_SALARY and MAX_SALARY;


Atau
 
select FIRST_NAME, SALARY, TAX_RATE
from EMPLOYEES,TAX
where SALARY between MIN_SALARY and MAX_SALARY;

 Akan menghasilkan Output yang sama yaitu :
Demikian Artikel yang dapat saya tulis semoga bisa bermanfaat,
 

4 komentar:

Jangan lupa tinggalkan komentar anda, baik berupa koreksi, kritikan maupun saran...