SQL Join (Inner, Left, Right, Full)

Atrem13
7 min readMay 25, 2020

--

Hei hei… balik lagi dengan saya merta v:, jujur aja sebenernya kalian males liat opening ga jelas gini kan :v , tapi aku bakal tetep bikin opening gini di tiap artikel yang kutulis. biar ga baru aja liat page eh udah dihajar ama materi aja. Karena sebelumnya kita udah pelajarin tentang normalisasi database, kita bakal pakai materi itu untuk sesi belajar kali ini

(bagi yang belum monggo di cek dulu: https://medium.com/@atrem13/normalisasi-database-c3e40220bfeb)

kalo udah yuk masuk ke materi

Photo by Jonathan Chng on Unsplash

SQL JOIN

Sebelumnya kita telah belajar melakukan normalisasi database. Dengan melakukan normalisasi kita bisa meminimalisir terjadinya redudansi data, sebelumnya kita juga telah belajar tentang sintak DML untuk memanipulasi data dalam database kita. Sekarang yang jadi pertanyaan adalah bagaimana kita bisa mendapatkan data dari hasil normalisasi tersebut, sebagai contoh bagaimana kita bisa mendapatkan ‘keterangan member’ melalui data ‘tipe_member’ di tabel ‘member’. Salah satu cara mengambil data dari beberapa tabel sekaligus dapat dilakukan dengan menggunakan join.

Photo by Rob Schreckhise on Unsplash

Pengertian Join

Join adalah cara untuk menghubungkan data yang diambil dari beberapa tabel melalui sebuah kolom yang menghubungkan mereka. Misal, kalian ingin menghubungkan tabel ‘member’ dengan tabel ‘tipe member‘ kalian bisa menghubungkan dua tabel tersebut berdasarkan ‘tipe_member’ yang sama.

Photo by Ocean Biggshott on Unsplash

Alasan melakukan Join

Sebenarnya kita bisa saja mengambil data dari 2 tabel tanpa menggunakan join, namun hal itu akan memerlukan proses yang lebih banyak. Akan tetapi dengan join memperbolehkan kita untuk mengambil data dari beberapa tabel melalui satu query. Dengan begitu pekerjaan yang dilakukan lebih sedikit dan tetap mendapatkan hasil yang sama.

Photo by Brooke Cagle on Unsplash

Jenis-jenis Join

Berikut ini adalah empat tipe join di SQL (beserta variannya).

Berikut penjelasannya

https://www.codepolitan.com/tujuh-teknik-join-di-sql-596c537f0deb3

Inner Join

Inner join adalah tipe join yang paling banyak dipakai. Dengan Inner join kita dapat mengembalikan data dari dua tabel atau lebih yang memenuhi syarat(misalnya dengan kode_movie yang sama).

Contoh kode:

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

Contoh implementasi

SELECT * FROM Faktur INNER JOIN Theater ON faktur.id_theater = Theater.id_theater;

Kode diatas akan mengambil data seluruh kolom tabel Faktur dan tabel Theater jika row datanya memiliki ‘id_theater’ yang sama. (misalnya row 1 pada tabel Faktur dan row 1 pada tabel Theater memiliki data id_theater yang sama yaitu ‘T01’)

Left Outer Join

left outer join ada 2 jenis, berikut akan kita bahas.

https://www.codepolitan.com/tujuh-teknik-join-di-sql-596c537f0deb3
  1. Left Outer Join

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

Contoh kode:

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

Contoh implementasi:

SELECT * FROM Faktur LEFT OUTER JOIN Movie ON Faktur.id_movie = Movie.id_movie;

(disini asumsikan kita memiliki 3 data pada tabel Movie, kemudian ada 3 data yang tidak memiliki pasangan di tabel Faktur, maka 3 data tersebut tidak akan ikut terbaca)

https://www.codepolitan.com/tujuh-teknik-join-di-sql-596c537f0deb3

2. 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 tidak memenuhi kondisi join dengan tabel sebelah kanan.

Contoh kode:

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

Contoh implementasi:

SELECT * FROM Faktur LEFT OUTER JOIN Movie OB Faktur.id_movie = Movie.id_movie WHERE Movie.id_movie IS NULL;

Kita Asumsikan bahwa kita memiliki 5 data pada tabel Faktur dengan field ‘id_movie’ = NULL, karena data tersebut tidak memiliki pasangan dengan tabel Movie maka ke-5 data tersebut akan menjadi hasil query diatas.

Right Outer Join

Sama seperti left outer join, right outer join juga ada 2 jenis. berikut penjelasannya

https://www.codepolitan.com/tujuh-teknik-join-di-sql-596c537f0deb3
  1. 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

(dari sintaks bahkan sama, Cuma urutan penyebutan tabel A dan B saja yang ditukar, aku pribadi juga kurang paham kenapa konsep satu ini tercipta v:).

Contoh kode:

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

Contoh implementasi:

SELECT * FROM Movie RIGHT OUTER JOIN Faktur ON Faktur.id_movie = Movie.id_movie;

(disini asumsikan kita memiliki 3 data pada tabel Faktur yang memiliki nilai pada field ‘id_movie’=NULL, maka 3 data tersebut tidak akan ikut terbaca)

Bisa kalian perhatikan kita hanya menukar urutan 2 table dari contoh left outer join sebelumnya.

2. 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 tidak memenuhi kondisi join dengan tabel sebelah kiri.

Contoh kode:

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

Contoh implementasi:

SELECT * FROM Movie RIGHT OUTER JOIN Faktur ON Faktur.id_movie = Movie.id_movie WHERE Faktur.id_movie IS NULL;

Kita asumsikan pada tabel Movie terdapat 2 data yang tidak memiliki pasangan dengan tabel Faktur. Maka ke-2 data tersebut akan menjadi hasil dari query diatas.

Full Outer Join

(lagi lagi tipe join satu ini memiliki 2 jenis :v)

1.Full outer join

Full outer join (sering disingkat full join) akan mengembalikan seluruh baris dari kedua tabel yang dikenai ON termasuk data-data yang tidak memiliki hubungan satu sama lain. Sejujurnya tipe ini paling jarang digunakan karena menyebabkan data yang tidak seragam

Contoh kode:

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

Contoh implementasi:

SELECT * FROM Faktur FULL JOIN Movie ON Faktur.id_movie = Movie.id_movie;

Query diatas akan mendapatkan data dari kedua tabel baik mereka memenuhi kondisi join maupun tidak

2.Full Outer Join without Intersection

Variasi lain dari full outer join yang akan mengembalikan seluruh data dari kedua tabel yang dikenai ON tapi tidak memenuhi kondisi ON tersebut, dengan kata lain data yang tidak memiliki hubungan satu sama lain.

Contoh kode:

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

Contoh implementasi:

SELECT * FROM Faktur FULL JOIN Movie ON Faktur.id_movie = Movie.id_movie WHERE Faktur.id_movie IS NULL OR Movie.id_movie IS NULL;

Query diatas akan mendapat data dari kedua tabel dimana masing masing data tersebut tidak memenuhi kondisi join.

Photo by Franck V. on Unsplash

Hore seri ini selesai juga akhirnya, kalau boleh jujur aku masih agak agak bingung juga ama tipe join right dan full v:, mungkin yang lebih tau bisa share ilmu juga disini. Tapi ini serius loh kalian harus memanfaatkan join. Kalau bisa memanfaatkan join dengan baik kedepannya kerjaan kalian akan lebih mudah karena bisa dapetin data dari berbagai tabel hanya dengan satu query. Siapa sih yang ga mau dipermudah pekerjaannya ya kan v: . seperti yang selalu aku bilang di tulisan tulisan sebelumnya, yang kalian liat disini hanya basic/dasar. Ayo kita explore terus bareng-bareng. Yang aku harapin sih kalian juga bakal share ilmu kalian ke publik, dengan begitu semakin banyak orang yang terbantu dengan tulisan kalian. (itu curhatan dariku yang susah banget nyari sumber materi yang sesuai keperluan ku, meskipun ada rata rata bahasa inggris jadi perlu usaha extra buat pahaminnya).

Ok seperti biasa kalau ada salah kata atau sejenisnya mohon dimaafkan dan kalau bisa dikoreksi agar aku bisa lebih baik lagi kedepannya.

Oke itu dulu untuk seri kali ini, saya Merta pamit undur diri dan ingat untuk ‘Haus akan ilmu baru’ :)

--

--

Atrem13
Atrem13

No responses yet