Cara menggunakan join table mysql

Join adalah penggabungan table yang dilakukan melalui kolom / key tertentu yang memiliki nilai terkait untuk mendapatkan satu set data dengan informasi lengkap.

Lengkap disini artinya kolom data didapatkan dari kolom-kolom hasil join antar table tersebut.

Join diperlukan karena perancangan table pada sistem transaksional kebanyakan di-normalisasi, salah satu alasannya untuk menghindari redundansi data.

Pada bahasa SQL, operasi join atau penggabungan antar table adalah operasi dasar database relasional yang sangat penting. Untuk mendukung perancangan database relasional yang baik.

Seorang programmer biasanya menggunakan join untuk mengidentifikasi record (baris) untuk bergabung. Jika predikat yang dievaluasi benar, record gabungan kemudian diproduksi dalam format yang diharapkan.

JOIN sangat penting untuk Anda pahami, jika ingin menghasilkan output data yang valid, menjamin integritas data, dan meminimalisir redudansi data. 

Anda akan kesulitan menghubungan antar table jika anda tidak memahami konsep JOIN ini. Jadi, sangatlah penting bagi anda untuk benar-benar memahami konsep join ini dengan baik.

Dapatkan diskon 75% paket hosting dan gratis domain + extra diskon 5% dengan menggunakan kupon: MFIKRI

Order Sekarang.!

 

PERSIAPAN

Untuk mempermudah saya dalam menjelaskan fungsi dari masing-masing join ini, disini saya telah menyediakan satu database dimana terdapat dua tabel yang saling berhubungan didalamnya.

Adapun bentuk skema desain dari database saya adalah seperti gambar berikut:

Cara menggunakan join table mysql

Pada skema diatas, anda dapat melihat ada dua table yang saling berhubungan. Yaitu table gaji dan karyawan.

Dimana primary key karyawan_id pada table karyawan berelasi dengan foreign key karyawan_id pada table gaji.

Jika anda belum memiliki struktur table diatas, silahkan buat sebuah database dan eksekusi query berikut ini untuk membuat struktur table.

Table Karyawan:

CREATE TABLE karyawan (
    karyawan_id VARCHAR(10) PRIMARY KEY,
    karyawan_nama VARCHAR(100)
);  

Table Gaji:

CREATE TABLE gaji (
    gaji_id VARCHAR(10) PRIMARY KEY,
    karyawan_id VARCHAR(10),
    gaji_pokok DOUBLE,
    FOREIGN KEY (karyawan_id) REFERENCES karyawan(karyawan_id)
)ENGINE=INNODB;   

Insert beberapa data pada table karyawan dengan mengeksekusi query berikut:

INSERT INTO karyawan (karyawan_id,karyawan_nama)VALUES 
('001','Santi'),('002','Dewi'),('003','Joko'),
('004','Putri'),('005','Nadya'),('006','Febri');

Insert juga beberapa data pada table gaji dengan mengeksekusi query berikut:

INSERT INTO gaji (gaji_id,karyawan_id,gaji_pokok) VALUES 
('GJ001','001','2000000'),('GJ002','003','2500000'),('GJ003','002','2200000'),
('GJ004','004','1900000'),('GJ005','005','2000000');

Adapun data yang dihasilkan seperti gambar berikut:

Cara menggunakan join table mysql

Pada table diatas, anda dapat melihat bahwa table karyawan terdapat 6 record dan table gaji terdapat 5 record.

Pada table gaji terlihat bahwa karyawan dengan karyawan_id 006 tidak ada di table gaji. Dengan kata lain, karyawan dengan id 006 tidak memiliki gaji.

Bagaimana cara merelasikan dua table ini dengan perintah join?

Mari saya jelaskan satu-persatu!

 

#1. INNER JOIN

INNER JOIN adalah tipe join yang akan kita bahas pertama. Tipe join ini akan mengambil semua row dari table asal dan table tujuan dengan kondisi nilai key yang terkait saja, dan  jika tidak maka row tersebut tidak akan muncul. 

Kalau tidak terdapat kondisi key terkait antar table, maka semua row dari kedua table dikombinasikan.

Contoh:

SELECT * FROM karyawan INNER JOIN gaji 
ON karyawan.karyawan_id=gaji.karyawan_id;

Query diatas akan menghasilakn output seperti berikut:

Cara menggunakan join table mysql

Coba Anda perhatikan jumlah record yang ditampilkan!

Ya, record yang ditampilkan sebanyak 5 record. Karena INNER JOIN hanya memperhitungkan kondisi key yang terkait antara table karyawan dengan table gaji.

Sedangkan karyawan dengan karyawan_id=’006’ tidak ditampilkan, karena tidak terkait dengan table gaji.

Jika dibuat diagram venn-nya akan terlihat seperti gambar berikut:

Cara menggunakan join table mysql

 

#2. LEFT JOIN

LEFT JOIN atau biasa juga dikenal dengan LEFT OUTER JOIN merupakan perintah join untuk menampilkan semua data sebelah kiri dari table yang di joinkan dan menampilkan data sebelah kanan yang cocok dengan kondisi join. Jika tidak ditemukan kecocokan, maka akan di set NULL secara otomatis.

Contoh:

SELECT * FROM karyawan LEFT JOIN gaji 
ON karyawan.karyawan_id=gaji.karyawan_id;

Query diatas akan menghasilkan output seperti berikut:

Cara menggunakan join table mysql

Coba Anda perhatikan jumlah record yang ditampilkan!

Ya, record yang ditampilkan sebanyak 6 record. Karena LEFT JOIN akan menampilkan semua table sebelah kiri dari kondisi join yaitu table karyawan.

Semua data pada table karyawan akan ditampilkan, meskipun tidak ada kecocokan key pada table gaji. 

Jika dibuat diagram venn-nya akan terlihat seperti gambar berikut:

Cara menggunakan join table mysql

Selain kondisi diatas, LEFT JOIN juga bisa menampilkan data yang hanya kondisi key pada table tamu (foreign key) kosong (NULL).

Contoh:

SELECT * FROM karyawan LEFT JOIN gaji 
ON karyawan.karyawan_id=gaji.karyawan_id 
WHERE gaji.karyawan_id IS NULL;

Query diatas akan menghasilkan output seperti berikut:

Cara menggunakan join table mysql

Data yang ditampilkan hanya 1 record. Hal ini dikarenakan, hanya ada satu data yang belum memiliki kecocokan key pada table tamu.

Untuk mempermudah anda memahami perbedaan antara kedua LEFT JOIN ini coba perhatikan diagram venn berikut:

Cara menggunakan join table mysql

Dengan melihat perbedaan dari diagram venn tersebut, maka Anda akan mudah memahami bagaimana left join ini bekerja.

Ingat LEFT JOIN ini sangat penting untuk anda pahami, karena disaat Anda mulai mengerjakan project yang cukup kompleks, maka anda akan banyak berkutat dengan left join ini.

Contoh pada kasus diatas, hanya dengan memanfaatkan left join kita bisa menampilkan semua data karyawan yang sudah ada gajinya dan siapa yang belum ada gajinya.

Selain itu anda juga dapat menampilkan semua data karyawan yang belum ada gajinya dengan fungsi LEFT JOIN WHERE NULL.

Dapatkan diskon 75% paket hosting dan gratis domain + extra diskon 5% dengan menggunakan kupon: MFIKRI

Order Sekarang.!

 

#3. RIGHT JOIN

Kebalikan dari LEFT JOIN adalah RIGHT JOIN. RIGHT JOIN akan menampilkan semua data yang ada di table sebelah kanan dan mencari kecocokan key pada table sebelah kiri, jika tidak ditemukan kecocokan, maka akan di set NULL secara otomatis pada table sebelah kiri.

Apa itu join table mysql?

JOIN merupakan salah satu fungsi yang ada di SQL yang digunakan untuk penggabungan table melalui kolom atau key tertentu dimana memiliki nilai terkait untuk mendapatkan satu set data dengan informasi lengkap.

Apa itu inner join pada mysql?

2. Inner Join Inner join ini berfungsi untuk mengambil semua baris dari kedua tabel atau lebih. Penggabungan antara dua tabel atau lebih ini hanya dapat dilakukan jika tabel-tabel tersebut memiliki key kolom yang sama.

Apakah syarat untuk menggunakan inner join?

Syarat untuk INNER JOIN adalah kedua tabel harus memiliki sebuah kolom dengan nilai yang sama yang akan kita gunakan dalam proses JOIN. Dalam contoh kita, kolom tersebut adalah kolom NIP dari tabel nama_dosen, dan kolom NIP_dosen dari tabel mata_kuliah.

Perintah Inner join Digunakan untuk menggabungkan 2 tabel dimana diantara dua tabel yang datanya?

INNER JOIN Menggabungkan dua tabel dimana diantara dua tabel datanya bersesuaian. 2. LEFT JOIN atau LEFT OUTER JOIN Menggabungkan dua tabel dimana diantara dua tabel datanya bersesuaian dan juga semua record pada tabel sebelah kiri.