Selecting Data Join - Fantasi Teknologi

Breaking

Fantasi Teknologi

Tempatnya Belajar Teknologi Masa Kini

Post Top Ad

Post Top Ad

Kamis, 26 Agustus 2021

Selecting Data Join

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.  

A. 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:


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: 



B. OUTER JOIN 

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:

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: 

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: 

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: 

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. 

RIGHT JOIN 

Kebalikan dari LEFT JOIN adalah RIGHT JOIN, atau biasa juga dikenal dengan RIGHT OUTER 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. 

Contoh:

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

Query diatas akan menampilkan output seperti gambar berikut:

Pada output diatas, anda dapat melihat bahwa terdapat NULL pada table sebelah kiri. Hal ini dikarenakan tidak ditemukan kecocokan key diantara kedua table. Untuk lebih mudah memahaminya, perhatikan diagram venn berikut:

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

Contoh:

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

Query diatas akan menghasilkan output seperti gambar berikut: 

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 RIGHT JOIN ini coba perhatikan diagram venn berikut: 

Perhatikan diagram venn diatas, dan bandingkan dengan diagram venn sebelumnya. 


IMPLISIT JOIN 

Sejauh ini, kita menampilkan data dari beberapa tabel MySQL dengan menggunakan klausa JOIN. Selain menggunakan klausa JOIN, terdapat satu cara lagi untuk menggabungkan tabel MySQL, yaitu menggunakan implisit join, disebut implisit join karena kita tidak menggunakan klausa JOIN, pada implisit join, kriteria hubungan antar tabel di definisikan pada klausa WHERE. 

Sebagai contoh, mari kita gabungkan tabel pelanggan dan penjualan, jalankan query berikut:

SELECT pl.id_pelanggan, nama, id_transaksi, tgl_transaksi, total_transaksi FROM pelanggan pl, penjualan pn WHERE pl.id_pelanggan = pn.id_pelanggan;

Hasil yang kita peroleh: 

+---------+---------+--------+-------------+----------+ 

|id_plggn|   nama  | id_trx |     tgl_trx   |total_trx | 

+---------+---------+--------+-------------+----------+ 

|      1      | Alfa      | 1      | 2017-02-22 | 230000  |

|      3      | Charlie | 2      | 2017-02-22 | 195000  |

|      2      | Beta     | 3      | 2017-01-01 | 1710000| 

|      1      | Alfa      | 4      | 2017-02-04 | 310000 | 

+---------+---------+--------+-------------+----------+ 

Perhatikan bahwa hasil tersebut sama persis dengan hasil pada contoh INNER JOIN, sehingga dapat disimpulkan bahwa implisit join = inner join. 

Implisit join mensyaratkan kedua tabel memiliki data yang sama ( WHERE pl.id_pelanggan = pn.id_pelanggan ), sehingga implisit join ini hanya berlaku pada INNER JOIN, dan tidak bisa digunakan untuk OUTER JOIN. 

Implisit JOIN ini merupakan cara lama ketika pertama kali standar SQL dibuat, setelah muncul standar yang lebih baru (SQL2) maka mulai digunakanlah klausa JOIN. Saya sendiri prefer menggunakan klausa JOIN karena lebih mudah dibaca dan dipahami, terutama hubungan antara tabel yang digabungkan. 

Pada bentuk klausa JOIN, hubungan antar tabel dinyatakan pada klausa ON atau USING, sedangkan filter datanya dilakukan pada klausa WHERE, misal:

SELECT pl.id_pelanggan, nama, id_transaksi, tgl_transaksi, total_transaksi FROM pelanggan pl LEFT JOIN penjualan pn USING (id_pelanggan) WHERE pl.id_pelanggan = 2 OR pl.id_pelanggan = 1;

sedangkan pada implisit JOIN, hubungan antar tabel dan filter datanya, semua didefinisikan pada klausa WHERE, misal: 

SELECT pl.id_pelanggan, nama, id_transaksi, tgl_transaksi, total_transaksi FROM pelanggan pl, penjualan pn WHERE pl.id_pelanggan = pn.id_pelanggan AND (pl.id_pelanggan = 2 OR pl.id_pelanggan = 1);

1 komentar:

Post Top Ad