Belajar mengenai INNER JOIN di MySQL || Database #5

Callysa Tanjaya
6 min readSep 28, 2023

--

Halo teman-teman semua! Pada kesempatan kali ini saya bersama dengan rekan saya Liora Carlita ingin melanjutkan artikel pembelajaran Sistem Basis Data. Ini merupakan artikel ke 5 yang telah kami buat, dan saya akan cantumkan 4 artikel sebelumnya yang sudah kami buat agar teman-teman pembaca bisa mengikuti pembelajaran dari awal.

Artikel 1: Mencoba Membuat New Connection SQL Database Sebagai Pemula || Database #1

Artikel 2: SELECT untuk Menyeleksi Kolom di MySQL || Database #2

Artikel 3: ORDER BY untuk Mengurutkan Data dalam SQL|| Database #3

Artikel 4: WHERE untuk Menyeleksi Baris di MySQL || Database #4

Yuk dari pada berlama-lama lagi, mari kita masuk ke inti pembahasan!

Dalam artikel kali ini, kita akan membahas mengenai klausa JOIN pada SQL. JOIN adalah klausa yang berfungsi untuk menggabungkan 2 atau lebih tabel dan menampilkan gabungannya seperti sebuah tabel baru. Sebenarnya ada 3 jenis JOIN (natural join, inner join, dan outer join), tapi di artikel ini kita akan berfokus kepada INNER JOIN.

Seperti biasa, langsung saja kita lihat contoh dan penjelasannya :)

Kita akan gunakan tabel productline dan tabel products dari database classicmodels.

Nah, sebelum menghubungkan kedua tabel tersebut, tentunya kita harus memahami terlebih dahulu isi tabelnya dong… Kira-kira seperti ini hubungan keduanya kalau divisualisasikan:

Sebelumnya, ada 2 istilah yang harus teman-teman pahami terlebih dahulu sebelum melanjutkan tentang join, yaitu PRIMARY KEY dan FOREIGN KEY.

Primary key adalah sebutan bagi kolom yang datanya bersifat unik / dapat dijadikan pembeda dari kolom lain. Misalnya di sebuah tabel berisi data nomor induk mahasiswa dan nama mahasiswa, kolom nomor induk mahasiswa pasti menjadi primary key-nya karena nomor induk bisa diandalkan untuk membedakan antara mahasiswa yang satu dengan yang lain. Kalau nama kan bisa saja ada 2 orang dengan nama yang sama persis, tapi nomor induknya pasti tidak akan ada yang sama antara 2 orang mahasiswa.

Pada kedua tabel yang kita gunakan sebagai contoh di atas, primary key untuk tabel products adalah productCode, sedangkan primary key untuk tabel productlines adalah productLine.

Foreign key adalah sebutan bagi kolom di sebuah tabel yang ada pula di tabel lainnya dan di tabel lain ini kolom tersebut menjadi primary key (…agak ribet ya bahasanya…). Dalam contoh kita, foreign key yang dimaksud adalah kolom productLine di tabel products, karena kolom productLine adalah primary key di tabel productlines. Keberadaan foreign key menandakan bahwa kedua tabel tersebut benar-benar memiliki hubungan antara satu dengan yang lainnya. Semoga bisa dipahami ya teman-teman perihal primary dan foreign key ini, hehehe…

Oke kembali lagi ke Beekeeper studio.

Untuk menggunakan inner join antara kedua tabel tersebut, kurang lebih command yang kita tuliskan akan menjadi seperti ini:

select *

from products t1 inner join productlines t2

on t1.productline = t2.productline;

Untuk memudahkan, tabel products bisa kita aliaskan menjadi t1 dan tabel productlines bisa kita aliaskan menjadi t2. Products alias t1 inner join dengan productlines alias t2. Jangan lupa menyebutkan kolom apa yang menjadi patokan penggabungan kedua tabel tersebut menggunakan kata kunci ON. Di sini kita menggunakan kolom productline yang juga merupakan foreign key atau kolom penghubung kedua tabel tersebut, sehingga baris command-nya menjadi “on t1.productline = t2.productline”.

Agar lebih mudah melihatnya, kita cukup tampilkan productcode dan productname dari t1, serta textdescription dari t2. Sehingga kemudian command-nya akan menjadi seperti ini:

select t1.productcode, t1.productname, t2.textdescription

from products t1 inner join productlines t2

on t1.productline = t2.productline;

Selain menggunakan kata kunci on, kita juga bisa menggunakan kata kunci using untuk mendapatkan hasil yang sama persis seperti di atas.

select t1.productcode, t1.productname, t2.textdescription

from products t1 inner join productlines t2

using (productline);

Catatan: jangan lupa gunakan tanda kurung ketika menggunakan kata kunci using.

Seperti klausa-klausa yang sudah pernah kita pelajari bersama sebelumnya, kita juga bisa menggunakan klausa JOIN dengan klausa WHERE. Kita coba tampilkan data produk yang harga belinya di atas 100.

select t1.productcode, t1.productname, t1.buyprice, t2.textdescription

from products t1 inner join productlines t2

using (productline)

where t1.buyprice > 100;

Command di atas menghasilkan gabungan antara tabel products dengan productlines berdasarkan kolom productline di mana buyprice-nya bernilai lebih besar dari 100.

Tabel yang akan digabungkan menggunakan InnerJoin.

Sekarang kita akan melakukan penghubungan menggunakan INNER JOIN pada 3 tabel yaitu tabel products, orderdetails dan orders. Tabel products berguna untuk menampilkan data-data dari sebuah product dan primary key yang dimiliki adalah *productCode. Table orders berfungsi menampilkan data seperti status dari sebuah order, dan primary key yang dimiliki adalah *orderNumber, kemudian untuk tabel orderdetails menampilkan data secara detail mengenai sebuah order, dan primary KEY yang dimiliki adalah *orderNumber dan *productCode, tabel orderdetails berguna untuk menghubungkan tabel products dengan tabel orders.

Sekarang kita dihadapkan dengan kebutuhan untuk menampilkan nota secara utuh yang diurutkan secara order number/nomor nota. Hal yang perlu kita tampilkan adalah *orderNumber dan orderDate yang datanya tersimpan di tabel orders, kemudian productName dari tabel product, dan quantityOrdered dan priceEach yang datanya tersimpan di tabel orderdetails.

Kita bisa memulai dari tabel products dan orders terlebih dahulu. Kita tidak bisa memulai dari orderdetails karena fungsi dari orderdetails adalah sebagai penghubung kedua tabel tersebut. Disini kita menggunakan tabel orders dan kita namai terlebih dahulu. Kemudian hubungkan dengan orderdetails menggunakan Innerjoin, kita memakai using untuk menghubungkan tabel orders dengan orderdetails menggunakan kolom penghubung yaitu ordernumbers.

Lalu kita ingin menghubungkan ke tabel ke 3 yaitu tabel products dan kita namai, kita memaikai using dan menggunakan productcode untuk menghubungkan tabel products dengan orderdetails.

Kemudian kita dihadapkan dengan kebutuhaan untuk mengurutkan data sesuai dengan urutan ordernumber, kita memakai klausa orderby yang diikuti dengan “o.ordernumber;”, dan kita akan mengurutkan data yang ingin ditampilkan.

Hasil output.

Andai kata kita dihadakan dengan kebutuhan yang lebih spesifik dimana kita hanya menampilkan nota transaksi yang berdasarkan nomor nota 10200 saja. Kita bisa menggunakan klausa where yang diikuti dengan “o.ordernumber=10200”.

Dan hasil yang akan muncul hanya nota yang ordernumbernya bernilai 10200 saja.

Demikianlah cara menggunakan “INNER JOIN” di SQL, semoga dari penjelasan dan contoh yang diberikan di dalam artikel ini, teman-teman bisa terbantu dan ikut belajar ya…

Terima kasih dan sampai jumpa di artikel berikutnya!

--

--