Mengenal Fungsi Join dalam Mysql Yang Wajib Anda Ketahui !!! - Sinauo.Com

Mengenal Fungsi Join dalam Mysql Yang Wajib Anda Ketahui !!!


Di dalam database mysql pastinya kita sering membuat lebih dari satu tabel di dalam tabel tersebut sering terjadi relasi antara tabel satu dengan tabel lainnya atau disebut juga Join. Yang dimaksud Join adalah penggabungan dua tabel yang saling terhubung atau terelasi antara colom dalam tabel satu dengan colom dalam tabel lain sehingga membentuk suatu informasi data yang lengkap atau menyeluruh. Sehingga kita dapat menampilkan data dari dua tabel yang berbeda menjadi satu tampilan / informasi dengan cara mengambil data colom yang sama walaupun colom yang lainnya berbeda. Untuk penjelasan lebih detail akan kita praktekan dibawah ini.

Didalam database mysql terdapat tiga Join yaitu INNER JOIN, LEFT JOIN, dan RIGHT JOIN yang akan kita bahas kali ini.

perhatikan gambar berikut ini
Pada gambar diatas terdapat dua tabel yaitu tabel mapel dan juga tabel guru yang sudah terelasi atau terhubung melalui colom kode_guru sebagai Primary Key ( dalam tabel Guru) dan colom kode_guru sebagi Foreign Key ( dalam tabel mapel ).

Kita tambahkan record atau data dari masing-masing tabel tersebut.

Data record tabel Guru;
mysql> select * from guru;
+-----------+-----------------+---------------+----------------+
| kode_guru | nama_guru       | jenis_kelamin | alamat_guru    |
+-----------+-----------------+---------------+----------------+
| KG01      | Aminudin        | L             | Bangsri Jepara |
| KG02      | Anisa Rahma     | P             | Mlonggo Jepara |
| KG03      | Johanudin       | L             | Bangsri Jepara |
| KG04      | Amelia          | P             | Jepara Jepara  |
| KG05      | Suwarno         | L             | Mlonggo Jepara |
| KG06      | Andi Widianto   | L             | Mlonggo        |
| KG07      | Suci Rahmawati  | P             | Bangsri        |
| KG08      | Budi Santosa    | L             | Jepara         |
| KG09      | Rudi Haryanto   | L             | Jepara         |
| KG10      | Reni Widiati    | P             | Pakis Aji      |
| KG11      | Bambang Budiman | L             | Jepara         |
| KG12      | Retno Saputri   | P             | Kembang        |
+-----------+-----------------+---------------+----------------+
12 rows in set (0.00 sec)

Data Record Tabel Mapel
mysql> select *from mapel;
+------------+-------------+------------+-----------+
| kode_mapel | nama_mapel  | kode_kelas | kode_guru |
+------------+-------------+------------+-----------+
| MP01       | B Indonesia | X          | KG01      |
| MP02       | MTK         | X          | KG02      |
| MP03       | B Inggris   | X          | KG06      |
| MP04       | AGAMA       | X          | KG05      |
| MP05       | IPA         | X          | KG10      |
| MP06       | Seni Budaya | X          | KG09      |
| MP07       | PPKN        | X          | KG10      |
+------------+-------------+------------+-----------+
7 rows in set (0.00 sec)

Dari kedua tabel diatas terdapat beberapa record data dimana data yang ada di kolom kode_guru dalam tabel mapel data tersebut juga ada di colom kode_guru dalam tabel guru yang fungsinya nanti digunakan untuk menghubungkan atau merelasikan data antara yang ada dalam tabel Guru dan Juga Tabel Mapel.

Menampilkan data dengan INNER JOIN

Cara menampilkan data atau menghubungkan data yang ada dalam tabel dengan INNER JOIN ini cukuplah sangat mudah  INNER JOIN merupakan tipe penggabungan yang akan mengambil semua data dari tabel asal dan tabel tujuan dengan kondisi key yang terkait jika tidak maka data tersebut tidak akan tampil atau muncul.

Contoh :
mysql> SELECT * FROM guru INNER JOIN mapel ON guru.kode_guru=mapel.kode_guru;
+-----------+---------------+---------------+----------------+------------+-------------+------------+-----------+
| kode_guru | nama_guru     | jenis_kelamin | alamat_guru    | kode_mapel | nama_mapel  | kode_kelas | kode_guru |
+-----------+---------------+---------------+----------------+------------+-------------+------------+-----------+
| KG01      | Aminudin      | L             | Bangsri Jepara | MP01       | B Indonesia | X          | KG01      |
| KG02      | Anisa Rahma   | P             | Mlonggo Jepara | MP02       | MTK         | X          | KG02      |
| KG06      | Andi Widianto | L             | Mlonggo        | MP03       | B Inggris   | X          | KG06      |
| KG05      | Suwarno       | L             | Mlonggo Jepara | MP04       | AGAMA       | X          | KG05      |
| KG10      | Reni Widiati  | P             | Pakis Aji      | MP05       | IPA         | X          | KG10      |
| KG09      | Rudi Haryanto | L             | Jepara         | MP06       | Seni Budaya | X          | KG09      |
| KG10      | Reni Widiati  | P             | Pakis Aji      | MP07       | PPKN        | X          | KG10      |
+-----------+---------------+---------------+----------------+------------+-------------+------------+-----------+
7 rows in set (0.06 sec)

Coba kalian lihat dari tabel diatas ada beberapa data guru yang tidak tampil dalam data diatas. Data di atas hanya menampilkan data guru yang mempunyai relasi di dalam tabel mapel. Data kode_guru yang tidak terkait dengan tabel mapel maka tidak ditampilkan.

Menampilkan data dengan LEFT JOIN

Perintah penggabungan LEFT JOIN bisa disebut juga dengan LEFT OUTER JOIN perintah ini digunakan untuk menampilkan semua data sebelah kiri dari tabel yang di gabungkan dan akan menampilkan data sebelah kanan yang sesuai dengan kondisi penggabungan atau join. Jika data tidak ditemukan penggabungan atau data yang cocok, maka akan NULL otomatis.

Contoh :

mysql> SELECT * FROM guru LEFT JOIN mapel ON guru.kode_guru=mapel.kode_guru;
+-----------+-----------------+---------------+----------------+------------+-------------+------------+-----------+
| kode_guru | nama_guru       | jenis_kelamin | alamat_guru    | kode_mapel | nama_mapel  | kode_kelas | kode_guru |
+-----------+-----------------+---------------+----------------+------------+-------------+------------+-----------+
| KG01      | Aminudin        | L             | Bangsri Jepara | MP01       | B Indonesia | X          | KG01      |
| KG02      | Anisa Rahma     | P             | Mlonggo Jepara | MP02       | MTK         | X          | KG02      |
| KG03      | Johanudin       | L             | Bangsri Jepara | NULL       | NULL        | NULL       | NULL      |
| KG04      | Amelia          | P             | Jepara Jepara  | NULL       | NULL        | NULL       | NULL      |
| KG05      | Suwarno         | L             | Mlonggo Jepara | MP04       | AGAMA       | X          | KG05      |
| KG06      | Andi Widianto   | L             | Mlonggo        | MP03       | B Inggris   | X          | KG06      |
| KG07      | Suci Rahmawati  | P             | Bangsri        | NULL       | NULL        | NULL       | NULL      |
| KG08      | Budi Santosa    | L             | Jepara         | NULL       | NULL        | NULL       | NULL      |
| KG09      | Rudi Haryanto   | L             | Jepara         | MP06       | Seni Budaya | X          | KG09      |
| KG10      | Reni Widiati    | P             | Pakis Aji      | MP05       | IPA         | X          | KG10      |
| KG10      | Reni Widiati    | P             | Pakis Aji      | MP07       | PPKN        | X          | KG10      |
| KG11      | Bambang Budiman | L             | Jepara         | NULL       | NULL        | NULL       | NULL      |
| KG12      | Retno Saputri   | P             | Kembang        | NULL       | NULL        | NULL       | NULL      |
+-----------+-----------------+---------------+----------------+------------+-------------+------------+-----------+
13 rows in set (0.00 sec)

Dari data diatas menampilkan semua data dari kiri tabel guru secara lengkap dan di dalam tabel mapel akan terisi set NULL jika tidak ditemukan relasi data kode_guru. Kalian juga bisa menampilkan data guru yang belum mempunyai relasi / NULL dengan tabel mapel , contoh querynya seperti dibawah ini.

mysql> SELECT * FROM guru LEFT JOIN mapel ON guru.kode_guru=mapel.kode_guru where mapel.kode_guru IS NULL;
+-----------+-----------------+---------------+----------------+------------+------------+------------+-----------+
| kode_guru | nama_guru       | jenis_kelamin | alamat_guru    | kode_mapel | nama_mapel | kode_kelas | kode_guru |
+-----------+-----------------+---------------+----------------+------------+------------+------------+-----------+
| KG03      | Johanudin       | L             | Bangsri Jepara | NULL       | NULL       | NULL       | NULL      |
| KG04      | Amelia          | P             | Jepara Jepara  | NULL       | NULL       | NULL       | NULL      |
| KG07      | Suci Rahmawati  | P             | Bangsri        | NULL       | NULL       | NULL       | NULL      |
| KG08      | Budi Santosa    | L             | Jepara         | NULL       | NULL       | NULL       | NULL      |
| KG11      | Bambang Budiman | L             | Jepara         | NULL       | NULL       | NULL       | NULL      |
| KG12      | Retno Saputri   | P             | Kembang        | NULL       | NULL       | NULL       | NULL      |
+-----------+-----------------+---------------+----------------+------------+------------+------------+-----------+
6 rows in set (0.00 sec)

Menampilkan data dengan RIGHT JOIN 
RIGHT JOIN ini merupakan kebalikan dari LEFT JOIN. RIGHT JOIN disebut juga dengan RIGHT OUTER JOIN. RIGHT JOIN mempunyai fungsi dia akan menampilkan data di tabel sebelah kanan dan mencari kecocokan relasi key pada tabel sebelah kiri. Jika tidak ditemukan kecocokan data relasi key maka secara otomatis akan NULL pada tabel sebelah kiri.

Contoh : 

mysql> SELECT * FROM mapel RIGHT JOIN guru ON mapel.kode_guru=guru.kode_guru;
+------------+-------------+------------+-----------+-----------+-----------------+---------------+----------------+
| kode_mapel | nama_mapel  | kode_kelas | kode_guru | kode_guru | nama_guru       | jenis_kelamin | alamat_guru    |
+------------+-------------+------------+-----------+-----------+-----------------+---------------+----------------+
| MP01       | B Indonesia | X          | KG01      | KG01      | Aminudin        | L             | Bangsri Jepara |
| MP02       | MTK         | X          | KG02      | KG02      | Anisa Rahma     | P             | Mlonggo Jepara |
| NULL       | NULL        | NULL       | NULL      | KG03      | Johanudin       | L             | Bangsri Jepara |
| NULL       | NULL        | NULL       | NULL      | KG04      | Amelia          | P             | Jepara Jepara  |
| MP04       | AGAMA       | X          | KG05      | KG05      | Suwarno         | L             | Mlonggo Jepara |
| MP03       | B Inggris   | X          | KG06      | KG06      | Andi Widianto   | L             | Mlonggo        |
| NULL       | NULL        | NULL       | NULL      | KG07      | Suci Rahmawati  | P             | Bangsri        |
| NULL       | NULL        | NULL       | NULL      | KG08      | Budi Santosa    | L             | Jepara         |
| MP06       | Seni Budaya | X          | KG09      | KG09      | Rudi Haryanto   | L             | Jepara         |
| MP05       | IPA         | X          | KG10      | KG10      | Reni Widiati    | P             | Pakis Aji      |
| MP07       | PPKN        | X          | KG10      | KG10      | Reni Widiati    | P             | Pakis Aji      |
| NULL       | NULL        | NULL       | NULL      | KG11      | Bambang Budiman | L             | Jepara         |
| NULL       | NULL        | NULL       | NULL      | KG12      | Retno Saputri   | P             | Kembang        |
+------------+-------------+------------+-----------+-----------+-----------------+---------------+----------------+
13 rows in set (0.00 sec)

Pada hasil diatas terdapat NULL disebelah kiri karena tidak ditemukan kecocokan relasi key di antara tabel mapel dan tabel guru.

Itulah beberpa perbedaan dari tiga Join yang ada dalam database mysql : INNER JOIN, LEFT JOIN dan RIGHT JOIN.
Please write your comments