Untuk menampilkan semua baris pada tabel yang terletak pada kanan perintah JOIN adalah fungsi dari

Jarang sekali kita mengakses suatu data hanya dari satu tabel. Biasanya saat mengambil data kita akan mengakses beberapa tabel secara bersamaan. Salah satu cara mengambil data dari beberapa tabel sekaligus dapat dilakukan dengan menggunakan join. Artikel ini akan memberikan sedikit penyegaran bagi pembaca yang mungkin sedikit lupa tentang empat jenis Join di SQL dan tiga variannya.

Apa itu join?

Join adalah cara untuk menghubungkan data yang diambil dari tabel-tabel melalui sebuah kolom yang menghubungkan mereka. Misal, pembaca mungkin ingin menghubungkan tabel alamat dengan tabel nomor telepon berdasarkan nama seseorang (contoh: "Berikan saya alamat dan nomor telepon seseorang yang bernama John Smith.").

Mengapa join itu penting?

Join memperbolehkan kita untuk mengambil data dari beberapa tabel melalui satu query. Hanya menggunakan sebuah tabel artinya kita hanya dapat menyimpan/memperoleh data yang terbatas atau justru menyimpan/memperoleh data yang terlalu banyak sehingga tabelnya menjadi kurang baik. Join menghubungkan satu tabel dengan tabel yang lain (inilah yang dimaksud dengan relational dari istilah relational database).

Ada berapa jenis join?

Berikut ini adalah empat tipe join di SQL (bersama tiga variannya). Sebagai pelengkap dari penjelasan yang ada, kami telah menyediakan contoh kode SQL.

Inner Join

Inner join mungkin tipe join yang paling banyak dipakai. Inner join mengembalikan baris-baris dari dua tabel atau lebih yang memenuhi syarat.

Untuk menampilkan semua baris pada tabel yang terletak pada kanan perintah JOIN adalah fungsi dari

SELECT columns FROM TableA INNER JOIN TableB ON A.columnName = B.columnName;

Left [Outer] Join

Left outer join (sering disingkat left join) akan mengembalikan seluruh baris dari tabel disebelah kiri yang dikenai kondisi ON dan hanya baris dari tabel disebelah kanan yang memenuhi kondisi join.

Untuk menampilkan semua baris pada tabel yang terletak pada kanan perintah JOIN adalah fungsi dari

SELECT columns FROM TableA LEFT OUTER JOIN TableB ON A.columnName = B.columnName

Left [Outer] Join without Intersection

Join ini merupakan variasi dari left outer join. Pada join ini kita hanya akan mengambil data dari tabel sebelah kiri yang dikenai kondisi ON yang juga memenuhi kondisi join tanpa data dari tabel sebelah kanan yang memenuhi kondisi join.

Untuk menampilkan semua baris pada tabel yang terletak pada kanan perintah JOIN adalah fungsi dari

SELECT columns FROM TableA LEFT OUTER JOIN TableB ON A.columnName = B.columnName WHERE B.columnName IS NULL

Right [Outer] Join

Right outer join (sering disingkat right join) akan mengembalikan semua baris dari tabel sebelah kanan yang dikenai kondisi ON dengan data dari tabel sebelah kiri yang memenuhi kondisi join. Teknik ini merupakan kebalikan dari left outer join.

Untuk menampilkan semua baris pada tabel yang terletak pada kanan perintah JOIN adalah fungsi dari

SELECT columns FROM TableA RIGHT OUTER JOIN TableB ON A.columnName = B.columnName

Right [Outer] Join without Intersection

Teknik ini merupakan variasi dari right outer join. Pada join ini kita hanya akan mengambil data dari tabel sebelah kanan yang dikenai kondisi ON yang juga memenuhi kondisi join tanpa data dari tabel sebelah kanan yang memenuhi kondisi join.

Untuk menampilkan semua baris pada tabel yang terletak pada kanan perintah JOIN adalah fungsi dari

SELECT columns FROM TableA RIGHT OUTER JOIN TableB ON A.columnName = B.columnName WHERE A.columnName IS NULL

Full [Outer] Join

Full outer join (sering disingkat full join) akan mengembalikan seluruh baris dari kedua tabel yang dikenai ON termasuk data-data yang bernilai NULL.

Untuk menampilkan semua baris pada tabel yang terletak pada kanan perintah JOIN adalah fungsi dari

SELECT columns FROM TableA FULL JOIN TableB ON A.columnName = B.columnName

Full [Outer] Join without Intersection

Variasi lain dari full outer join yang akan mengembalikan seluruh data dari kedua tabel yang dikenai ON tanpa data yang memiliki nilai NULL.

Untuk menampilkan semua baris pada tabel yang terletak pada kanan perintah JOIN adalah fungsi dari

SELECT columns FROM TableA FULL JOIN TableB ON A.columnName = B.columnName WHERE A.columnName IS NULL OR B.columnName IS NULL

Sumber

Equijoin dan self join

Equi Join didasarkan pada kondisi untuk perbandingan, dapat terjadi pada setiap INNER, OUTER atau SELF bergabung dalam SQL.


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.
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.
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.
JOIN dengan tabel yang sama bisa juga disebut SELF-JOIN

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.
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.
FULL-Outer JOIN : akan menampilkan semua baris pada tabel yang terletak pada kiri dan kanan syntax JOIN walapun tidak sesuai ketika dibandingkan.
Non-Equi Join merupakan join yang menggunakan tanda selain equal (=), misalkan tanda !=, >, <, >=, <=, dll
Cross Join : mengembalikan produk cartesian dari baris dari tabel dalam bergabung. Dengan kata lain, hal itu akan menghasilkan baris yang menggabungkan setiap baris dari tabel pertama dengan setiap baris dari tabel kedua.

Klausa Using atau Join-U-using bisa digunakan jika pada tabel yang dijoin terdapat kolom yang memilik nama yang sama untuk tipe data boleh sama boleh berbeda. Pada waktu Join kita dapat  memilih kolom tertentu yang akan digunakan untuk dibandingkan, hal ini akan sangat berguna jika terdapat lebih dari satu kolom yang memiliki nama yng sama pada 2 tabel yang akan di JOIN. 

buat tabel perusahaan A dan perisahaan B berisi nik (char 2) dan nama (varchar 20) memakai INNER JOIN:

1. select * from perusahaanA 2. select * from perusahaanB 3. select perusahaanA.*, perusahaanB.* -> from perusahaanA inner join perusahaanB -> on perusahaanA.nik=perusahaanB.nik;

(menampilkan nik dan nama dari data karyawan yang merangkap bekerja di perusahaanA dan B saja)/ disebut juga irisan

memakai LEFT JOIN 1. select perusahaanA.*, perusahaanB.* -> from perusahaanA left join perusahaanB -> on perusahaanA.nik=perusahaanB.nik;

(mengutamakan data di sebelah kiri, sehingga isi dari tabel di sebelah kanan di isi null)

memakai RIGHT JOIN: 1. select perusahaanA.*, perusahaanB.* -> from perusahaanA right join perusahaanB -> on perusahaanA.nik=perusahaanB.nik;

(mengutamakan isi dari tabel di sebelah kanan, sehingga isi di tabel di sebelah kiri yang di isi NULL pada karyawan yang tidak merangkap pekerjaan)

dipakai untuk menggabungkan beberapa perintah SELECT yang menghasilkan sebuah gabungan.

1. select * from perusahaanA -> union -> select * from perusahaanB;

(menampilkan semua data karyawan di perusahaan A dan B, karyawan yang mendobel bekerja di 2 perusahaan di tulis 1 kali saja)

sama dengan UNION tapi akan menampilkan semua data meskipun data tersebut sama.

Query bersarang ( Nested Query)

      Dalam SQL dikenal Query bersarang, Query dalam Query

     Contoh : select npm, nama, kd_jurusan from tbl_mahasiswa where kd_jurusan IN ( select kd_jurusan from table jurusan where kd_jurusan='TI0004';