Menggunakan Inner Join, Left Join, dan Right Join

Disclaimer, ini posting dari, oleh dan untuk nubi, jadi mohon jangan dikomentari “baru tahu ta?” Atau sejenisnya. 😀

Query, yang pernah berurusan sama database mulai SQLite sampai Oracle tentu paham dengan istilah ini. Dia adalah salah satu pilar dalam mengolah sebuah database. Selain query paling dasar seperti sesederhana

SELECT * FROM tabelgue

Ada juga query agak dasar yang menggunakan fasilitas JOIN. Terdiri dari LEFT JOIN, INNER JOIN, dan RIGHT JOIN. Meskipun terlihat sederhana, pengaplikasiannya yang ngeri-ngeri sedap bisa sangat membantu dalam mengolah database.

Misalkan, kita punya tiga tabel yaitu, pegawai, kasbon, dan transaksi dengan struktur sebagai berikut:
1. pegawai, terdiri dari nocan_pegawai dan nama_pegawai dengan data sbb: (1, Anton), (2, Banton), (3, Canton), (4, Danton), (5, Enton), (6, Fanton)

2. kasbon, terdiri dari id_kasbon dan jenis_kasbon dengan data sbb: (1, “kredit motor”), (2, “kredit rumah”), (3, “dana hiburan”), (4, “kredit handphone)

3. transaksi terdiri dari id_trans, id_pembon, id_bonnya, nilai_bon, dan tahun_bon dengan data sbb: (1,1,1,2000000,2014), (1,1,3,200000,2015), (1,2,2,2000000,2015), (1,3,4,5000000,2014), (1,4,1,2000000,2014), (1,4,3,500000,2015),

Nah dengan data tersebut misalkan kita ingin tampilkan sebuah report di website dengan strutur:
Nama Pegawai|Jenis Kasbon|Nilai Kasbon|Tahun
Apa yang akan kita lakukan?

Biasanya kalau dalam pembuatan web berbasis php dengan mysql, kurang lebihnya alur kodingnya akan menjadi:

SELECT * FROM transaksi:
while(menampilkan transaksi){
SELECT pegawai.* FROM pegawai, transaksi WHERE pegawai.nocan_pegawai = transaksi.id_pembon;
SELECT kasbon.* FROM kasbon, transaksi WHERE kasbon.id_kasbon = transaksi.id_bonnya;
Tampilkan Hasilnya
}

Kalau mengikuti kelaziman di atas, maka akan ada 2 proses query tambahan untuk setiap.row di dalam tabel transaksi. Untuk mendapatkan format yang sama dengan satu kali query, kita bisa menggunakan query dengan JOIN. Query yang dipakai akan menjadi kurang lebih seperti di bawah ini:

SELECT a.*, b.nama_pegawai, c.jenis_kasbon FROM transaksi a
INNER JOIN pegawai b on a.id_pembon = b.nocan_pegawai
INNER JOIN kasbon c on a.id_bonnya = c.id_kasbon

Memang query akan lebih panjang, tapi cukup dilakukan satu kali saja.

Dengan menggunakan INNER JOIN, data yang ditampilkan hanya data yang cocok saja, dalam hal ini hanya data kasbon dari pegawai yang pernah melakukan kasbon. Apabila ingin menampilkan laporan kasbon untuk semua pegawai, pernah maupun tidak pernah melakukan kasbon, bagian “INNER JOIN pegawai” dapat anda rubah menjadi “RIGHT JOIN pegawai”. Apabila posisi query ditukar, maka untuk mendapatkan hasil yang sama bisa dilakukan dengan LEFT JOIN.

Selamat mencoba 😀

Advertisements
This entry was posted in Komputer and tagged , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s