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;
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 :
select E.FIRST_NAME PEGAWAI, M.FIRST_NAME MANAGER from EMPLOYEES E join EMPLOYEES M on E.MANAGER_ID=M.MANAGER_ID
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;
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;
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;
Non-Equi Join merupakan join yang menggunakan tanda selain equal (=), misalkan tanda !=, >, <, >=, <=, dll
Contohnya :
Akan menghasilkan Output yang sama yaitu :
Demikian Artikel yang dapat saya tulis semoga bisa bermanfaat,
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,
sangat membantu.... :)
BalasHapusMembantu ujiaan thanks hahaha
BalasHapusalhamdulillah, oke deh.
BalasHapusinfonya sangat bermanfaat min
BalasHapusSolder uap