SQL JOIN

Query SQL JOIN

SQL JOIN adalah perintah query dalam SQL yang memiliki fungsi untuk menggabungkan dua buah tabel dan menghasilkan tabel baru yang bersifat sementara (temporary). Adapun hasil tabel yang digabung tersebut disebut dengan joined table.

Terdapat beberapa jenis join dalam query sql join table, semua tipe sql join tersebut memiliki fungsinya masing-masing sehingga penting untuk diketahui.

Jenis SQL JOIN Table

  1. INNER JOIN berfungsi untuk menggabungkan dua buah tabel dengan kondisi mengembalikan records yang memiliki nilai yang bersesuaian di kedua tabel.
  2. LEFT JOIN berfungsi untuk menggabungkan dua buah tabel dengan kondisi mengembalikan semua records dari tabel kiri dan beberapa records dari tabel kanan yang memiliki nilai bersesuaian, jika tidak ada yang cocok diisi NULL.
  3. RIGHT JOIN berfungsi untuk menggabungkan dua buah tabel dengan kondisi mengembalikan semua records dari tabel kanan dan beberapa records dari tabel kiri yang memiliki nilai bersesuaian, jika tidak ada yang cocok diisi NULL.
  4. FULL JOIN berfungsi untuk menggabungkan dua buah tabel dengan mengembalikan semua records dari kedua tabel tersebut, di mana jika tidak ada nilai yang bersesuaian akan diisi dengan nilai NULL.
Ilustrasi SQL JOIN

Sintaks SQL JOIN

Misalkan kita punya dua buah tabel dengan nama tabel1 dan tabel2. Kedua tabel tersebut memiliki kolom yang bersesuaian yaitu kolom1. Maka sintaks SQL JOIN menjadi seperti berikut.

SELECT kolom1, kolom2, ... FROM tabel1
tipe_join tabel2
ON tabel.kolom1 = tabel2.kolom2;

Berdasarkan sintaks di atas, tipe_join merupakan keyword dari jenis sql join yang akan digunakan seperti yang disebutkan sebelumnya.

Agar bisa menguatkan pemahaman terkait dengan SQL JOIN ini, mari kita lakukan studi kasus pada tiap-tiap jenis sql join di tabel berikut.

Tabel customers

CustomerID CustomerName Address
1 John Doe Jl. Sungai Kapuas
2 Mikel Oman Jl. Batu Tunggal
3 Robert Lewi Jl. Kocoran Baru

Tabel orders

OrderID CustomerID OrderDate
10010 1 2023-11-09
10020 4 2023-11-10
10030 5 2023-11-11

Tampak bahwa ada kolom yang bersesuaian dari kedua tabel di atas, yaitu kolom CustomerID.

SQL INNER JOIN

Dalam kasus ini kita akan melakukan INNER JOIN pada tabel customers dan orders berdaasrkan kolom yang bersesuaian yaitu CustomerID.

SELECT * FROM customers
INNER JOIN orders
ON customers.CustomerID = orders.CustomerID;

Output:

CustomerID CustomerName Address OrderID CustomerID OrderDate
1 John Doe Jl. Sungai Kapuas 10010 1 2023-11-09

Dari output yang kita peroleh bisa kita lihat bahwa data kedua tabel bergabung tetapi hanya mengembalikan satu data record dengan CustomerID = 1.

Hal ini karena dari kedua tabel tersebut yang berisisan hanya di CustomerID = 1, sehingga SQL INNER JOIN hanya mengembalikan satu data saja pada kasus ini.

SQL LEFT JOIN

Dengan cara yang sama, sekarang mari kita lakukan LEFT JOIN di mana tabel kiri yakni customers dan tabel kanan yaitu orders.

SELECT * FROM customers
LEFT JOIN orders
ON customers.CustomerID = orders.CustomerID;

Output:

CustomerID CustomerName Address OrderID CustomerID OrderDate
1 John Doe Jl. Sungai Kapuas 10010 1 2023-11-09
2 Mikel Oman Jl. Batu Tunggal NULL NULL NULL
3 Robert Lewi Jl. Kocoran Baru NULL NULL NULL

Dari output di atas, tampak bahwa kita memperoleh semua data di tabel kiri (customers) dan satu data dari tabel kanan (orders) yang memiliki CustomerID sama dengan tabel kiri.

Sedangkan sisanya bernilai NULL yang berarti tidak ada. Hal ini karena di tabel kanan tidak ada yang cocok dengan CustomerID lain dari tabel kiri.

SQL RIGHT JOIN

Sekarang mari kita lakukan SQL RIGHT JOIN pada tabel yang sama dengan contoh-contoh sebelumnya. Pada dasarnya, query SQL RIGHT JOIN merupakan kebalikan dari LEFT JOIN.

SELECT * FROM customers
RIGHT JOIN orders
ON customers.CustomerID = orders.CustomerID;

Output:

CustomerID CustomerName Address OrderID CustomerID OrderDate
1 John Doe Jl. Sungai Kapuas 10010 1 2023-11-09
NULL NULL NULL 10020 4 2023-11-10
NULL NULL NULL 10030 5 2023-11-11

Tampak cukup jelas bahwa output dari SQL RIGHT JOIN mengembalikan nilai seluruh tabel kanan (orders) dan satu data dari tabel kiri (customers) yang memiliki CustomerID sama dengan tabel kanan.

Dari contoh tersebut kita dapat memahami bahwa LEFT dan RIGHT JOIN di sql itu saling berkebalikan.

SQL FULL JOIN

Terakhir dalam materi SQL JOIN ini yaitu SQL FULL JOIN yang mana akan menghasilkan gabungan antara LEFT JOIN dan RIGHT JOIN.

SELECT * FROM customers
FULL JOIN orders
ON customers.CustomerID = orders.CustomerID;

Output:

CustomerID CustomerName Address OrderID CustomerID OrderDate
1 John Doe Jl. Sungai Kapuas 10010 1 2023-11-09
2 Mikel Oman Jl. Batu Tunggal NULL NULL NULL
3 Robert Lewi Jl. Kocoran Baru NULL NULL NULL
NULL NULL NULL 10020 4 2023-11-10
NULL NULL NULL 10030 5 2023-11-11

Tampak bahwa output SQL FULL JOIN mengembalikan semua nilai dari kedua tabel layaknya gabungan LEFT JOIN dan RIGHT JOIN sql.

SQL JOIN dengan Alias

Di materi sebelumnya terkait dengan sql alias sempat disinggung bahwa penggunaan alias akan berguna dalam SQL JOIN.

Nah di akhir materi ini kita akan menunjukkan hal tersebut. Misalkan pada kasus FULL JOIN sebelumnya kita terapkan alias, maka query nya akan menjadi seperti berikut.

SELECT * FROM customers AS c
FULL JOIN orders AS o
ON c.CustomerID = o.CustomerID;

Output:

CustomerID CustomerName Address OrderID CustomerID OrderDate
1 John Doe Jl. Sungai Kapuas 10010 1 2023-11-09
2 Mikel Oman Jl. Batu Tunggal NULL NULL NULL
3 Robert Lewi Jl. Kocoran Baru NULL NULL NULL
NULL NULL NULL 10020 4 2023-11-10
NULL NULL NULL 10030 5 2023-11-11

Coba perhatikan pada query SQL JOIN menggunakan alias di atas, kita melakukan alias pada kedua tabel customers sebagai c sedangkan orders sebagai o.

Kebergunaanya terjadi di statement keyword ON di mana kita hanya perlu memanggil alias tabelnya ketimbang nama tabel, sehingga menjadi lebih singkat. Sekali lagi, ini akan sangat readable ketika terjadi di kasus nama tabel yang cukup panjang.

Tomi Nurhidayat

Data Science dan Machine Learning Enthusiast | SEO Enthusiast.

Previous Post Next Post