Minggu, 11 September 2016

[MySQL] Cara menggunakan JOIN


Diartikel ini,kita akan belajar cara menggunakan JOIN di MySQL . Bagi anda yang sudah mempelajari tentang database terutama MySQL atau anda yang baru mempelajari tentang MySQL, artikel ini semoga bisa menjadi bahan belajar yang baik dan jika ada saran atau kritik,bisa memberikannya dikolom komentar :).


Oke,yang kita tahu di MySQL (dan lainnya) terdapat beberapa fungsi join yang sering digunakan yaitu :

  • Simple Join (Inner Join)
  • Left Join (Left Outer Join)
  • Right Join (Right Outer Join)
  • Cross Join
sementara di Oracle,setahu saya ada fungsi join yaitu Natural Join,namun di luar point yang saya sebutkan (untuk Cross Join akan dicoba dijelaskan terpisah ) sebelumnya tidak akan kita bahas, itu diluar scope dan tentu saya juga kurang paham ;)

Pengertian Join
Join disini yaitu kita menggabungkan 2 atau lebih tabel untuk menampilkan data yang di-inginkan.Aturan sederhana (sepahaman saya) dari fungsi Join yaitu harus ada Primary key dan Foreign key untuk relasi nya dan sebaiknya menggunakan Alias untuk mencegah terjadinya ambigu dari nama kolom atau field yang sama antara tabel.

Karena bisa saja diantara tabel yang saling berhubungan tersebut mempunyai nama field yang sama, misalnya field bernama id,jika kita tidak menggunakan Alias, maka field tersebut menjadi ambigu atau tidak jelas field itu akan diambil dari tabel yang mana.

Lalu,kapan kita harus menggunakan fungsi JOIN?
Ketika kita ingin menampilkan data dengan lebih detail dan lebih informatif tentunya,jika hanya ingin menampilkan data sederhana misalnya nama buku dan harganya, cukup merujuk ke satu tabel yaitu tabel buku. Atau jika hanya ingin menampikan nama-nama pegawai cukup merujuk ke tabel pegawai,bukan ke tabel cuti atau tabel rekap lembur misalnya :)

Let's Begin
Pada contoh ini, saya menggunakan 2 tabel bernama t_buku dan t_penerbit.Perhatikan field dan data yang tersedia berikut :





Simple Join
syntax
SELECT nama_field FROM tabel_pertama
JOIN tabel_selanjutnya
ON key_tabel_pertama = key_tabel_kedua
contoh :
Kita ingin menampilkan data buku beserta nama penerbitnya,maka query yang ditulis sebagai berikut :

SELECT A.NM_BUKU, A.JNS_BUKU, A.PENGARANG, B.NAMA_PENERBIT
FROM T_BUKU A
JOIN T_PENERBIT B
ON A.ID_PENERBIT = B.ID_PENERBIT;
hasil nya seperti berikut:


pada query diatas kita membuat alias dari tabel t_buku menjadi a dan tabel t_penerbit menjadi b. Penamaan alias sebenarnya bebas, bisa saja membuat alias dari t_buku menjadi buku dan t_penerbit menjadi terbit :) , asalkan kita tidak memakai reserved word atau kata kunci dari MySQL itu sendiri seperti from, desc,asc dan sebagainya.

Sebenarnya bisa juga kita tidak menggunakan alias tapi menggunakan nama tabelnya sendiri pada kolom atau field yang kita lakukan join, seperti berikut :


hasilnya sama, namun query yang kita ketikkan menjadi lebih panjang. Beberapa orang juga melakukan hal tersebut (menurut mereka) supaya lebih enak jika suatu saat lupa nama alias dari suatu tabel dalam suatu query yang panjang dan melakukan banyak join.

Secara visual, Simple Join yang kita terapkan akan menjadi seperti ini :


Pada daerah yang berwarna hijau itu disitulah data yang kita dapatkan, yaitu data yang terdapat antara 2 tabel tersebut jika penghubungnya cocok (dalam hal ini yaitu dikedua tabel tersebut terdapat kecocokan data dari field ID_PENERBIT)

Jika kita perhatikan lagi, dari hasil query Simple Join yang kita lakukan tidak ditemukan data buku yang bernama "Mahir C# secepat yang anda bisa" karena di tabel t_buku,tidak ada value dari field ID_PENERBIT nya sehingga tidak ada nya kecocokan dengan tabel t_penerbit.


Left Join
syntax
SELECT nama_field FROM tabel_pertama
LEFT JOIN tabel_selanjutnya
ON key_tabel_pertama = key_tabel_kedua
contoh :
Kita ingin menampilkan semua data buku beserta nama penerbitnya jika ada,maka query yang ditulis sebagai berikut :

SELECT A.NM_BUKU, A.JNS_BUKU, A.PENGARANG, B.NAMA_PENERBIT
FROM T_BUKU A
LEFT JOIN T_PENERBIT B
ON A.ID_PENERBIT = B.ID_PENERBIT;

hasil nya seperti berikut:


Coba kita perhatikan lingkaran merah digambar (tenang ini bukan penampakan makhluk halus :'D ) namun itu adalah data yang muncul walaupun tidak ada nama penerbitnya.

Mengapa bisa begitu? padahal di Simple Join tadi data tersebut tidak ada. Ya, inilah guna nya fungsi Left Join, fungsi ini tetap menampilkan data yang ada di sebelah kiri (dalam hal ini adalah tabel t_buku) walaupun tidak ditemukan kecocokan di field ID_PENERBIT nya di tabel t_penerbit.

Jika anda masih bingung kenapa tabel t_buku disebut tabel sebelah kiri, mungkin bisa saya analogikan bahwa tabel FROM dari suatu query Join disebut sebelah kiri, sehingga tabel di Join nya disebut sebelah kanan.

Secara visual, Left Join yang kita terapkan akan menjadi seperti ini :


Pada daerah berwarna hijau tersebut adalah data yang ditampilkan, kita juga bisa melihat bahwa tabel t_buku berada disebelah kiri. Lalu, bagaimana visualisasi nya jika kita melakukan join ke lebih dari 2 tabel? mungkin seperti ini :

Disini kita melakukan 2 left join dari tabel t_buku ke tabel t_penerbit dan tabel t_rak, daerah yang berwarna hijau merupakan data yang diambil. jika data di tabel t_buku (kiri) tidak terdapat value yang sama dari field id_penerbit dan field kd_rak pada joinnya, tetap data di tabel t_buku akan tampil keseluruhan.

Untuk visualisasi join yang lebih kompleks lagi,tidak saya sertakan, agak ribet menggambarnya :)).

Right Join
syntax
SELECT nama_field FROM tabel_pertama
RIGHT JOIN tabel_selanjutnya
ON key_tabel_pertama = key_tabel_kedua
contoh :
Kita ingin menampilkan data buku beserta semua nama penerbitnya meskipun penerbit tersebut tidak memiliki data buku,maka query yang ditulis sebagai berikut :

SELECT A.NM_BUKU, A.JNS_BUKU, A.PENGARANG, B.NAMA_PENERBIT
FROM T_BUKU A
RIGHT JOIN T_PENERBIT B
ON A.ID_PENERBIT = B.ID_PENERBIT;
 hasil nya seperti berikut:


Pada data atau row terakhir (tidak saya lingkari merah lagi), muncul data nama penerbit yang bernama "Genji Media" dan tidak ada nama bukunya, dan kenapa data buku yang bernama "Mahir C# secepat yang anda bisa" menjadi tidak muncul lagi? mengapa bisa begini?.

Karena kita melakukan fungsi Right Join, dimana data pada tabel sebelah kanan lah yang akan diambil seluruhnya meskipun tidak ada kecocokan antara key nya.

Secara visual, Right Join yang kita terapkan akan menjadi seperti ini :

Pada daerah berwarna hijau tersebut adalah data yang ditampilkan, Tabel t_penerbit sekarang berwarna hijau karena data pada tabel tersebut ditampilkan semua.

Semoga Bermanfaat

Artikel ini dibuat oleh Yudha Tri Putra sebagai penulis artikel, diperbolehkan menyalin artikel ini secara utuh tanpa mengubah atau menambah isi artikel.

0 komentar:

Posting Komentar

(C) 2018. Diberdayakan oleh Blogger.

Categories

Followers