{"id":523,"date":"2019-12-19T04:21:35","date_gmt":"2019-12-19T04:21:35","guid":{"rendered":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/?p=523"},"modified":"2019-12-19T04:23:00","modified_gmt":"2019-12-19T04:23:00","slug":"query-select-multytable","status":"publish","type":"post","link":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/query-select-multytable\/","title":{"rendered":"Query Select MultyTable"},"content":{"rendered":"<p>Pada kesempatan kali ini kita akan membahas query untuk menampilkan data dari beberapa tabel MySQL. Pada tutorial ini sobat juga akan belajar bagaimana menggunakan <code>JOIN<\/code> pada MySQL.<\/p>\n<p>Ketika menampilkan data yang disimpan dari database, seringnya kita akan mengambil data dari beberapa tabel untuk diolah sehingga menjadi satu keluaran,\u00a0misal pada laporan penjualan.<\/p>\n<p>Pada model database relasional RDBMS termasuk MySQL, bentuk pengambilan data ini dapat dilakukan dengan mudah karena masing masing tabel saling berelasi\/berhubungan, bentuk hubungan ini\u00a0bermacam macam, bisa<em> one-to-one relationship, one-to-many, <\/em>dan <em>many-to-many<\/em><\/p>\n<h3>Persiapan<\/h3>\n<p>Sebelum melangkah lebih jauh, kita perlu menyiapkan tabel yang akan kita gunakan dalam tutorial ini.<\/p>\n<p>Pada contoh kali ini, saya menggunakan empat tabel, yaitu: tabel <code>pelanggan<\/code>, <code>produk<\/code>, <code>transaksi<\/code>, dan <code>transaksi_detail<\/code>. struktur dan hubungan keempat tabel tersebut tampak seperti pada gambar berikut:<\/p>\n<p><a href=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Hubungan-Antar-Tabel.png\"><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-2043 aligncenter lazy-loaded\" src=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Hubungan-Antar-Tabel.png\" sizes=\"(max-width: 637px) 100vw, 637px\" srcset=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Hubungan-Antar-Tabel.png 637w, https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Hubungan-Antar-Tabel-150x81.png 150w, https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Hubungan-Antar-Tabel-275x148.png 275w\" alt=\"Hubungan Antar Tabel\" width=\"637\" height=\"343\" data-lazy-type=\"image\" data-src=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Hubungan-Antar-Tabel.png\" data-srcset=\"\" \/><\/a><\/p>\n<p>Dari keempat tabel tersebut, kita hanya menggunakan beberapa diantaranya. Adapun contoh datanya adalah sebagai berikut:<\/p>\n<p>Tabel <code>barang<\/code>:<\/p>\n<pre class=\"aphph-container aphph-addlightplain\"><code class=\"aphph-addlightplain\">+-----------+-------------+-------------+---------+------+\r\n| id_barang | id_kategori | nama_barang | harga   | stok |\r\n+-----------+-------------+-------------+---------+------+\r\n|         1 |           1 | RAM         |  230000 |    4 |\r\n|         2 |           1 | Mainboard   | 1250000 |    7 |\r\n|         3 |           1 | Mouse       |   80000 |    6 |\r\n|         4 |           3 | Mousepad    |   35000 |    3 |\r\n|         5 |           3 | Keyboard    |   80000 |    5 |\r\n+-----------+-------------+-------------+---------+------+<\/code><\/pre>\n<p>Tabel <code>pelanggan:<\/code><\/p>\n<pre>+--------------+---------+-------------------+\r\n| id_pelanggan | nama    | email             |\r\n+--------------+---------+-------------------+\r\n|            1 | Alfa    | alfa@yahoo.com    |\r\n|            2 | Beta    | beta@yahoo.com    |\r\n|            3 | Charlie | charlie@gmail.com |\r\n|            4 | Delta   | delta@gmail.com   |\r\n+--------------+---------+-------------------+<\/pre>\n<p>Tabel <code>penjualan:<\/code><\/p>\n<pre>+--------------+--------------+---------------+-----------------+\r\n| id_transaksi | id_pelanggan | tgl_transaksi | total_transaksi |\r\n+--------------+--------------+---------------+-----------------+\r\n|            1 |            1 | 2017-02-22    |          230000 |\r\n|            2 |            3 | 2017-02-22    |          195000 |\r\n|            3 |            2 | 2017-01-01    |         1710000 |\r\n|            4 |            1 | 2017-02-04    |          310000 |\r\n|            5 |         NULL | 2017-02-10    |           80000 |\r\n+--------------+--------------+---------------+-----------------+<\/pre>\n<div class=\"aph-btn-group\"><a class=\"aph-btn aph-btn-blue aph-btn-small aph-btn-icon-anim\" href=\"https:\/\/jagowebdev.com\/wp-content\/demo\/files\/join_pada_mysql.sql.txt\" target=\"_blank\" rel=\"noopener noreferrer\">DOWNLOAD FILE SQL<\/a><\/div>\n<h3>I. JOIN Pada MySQL<\/h3>\n<p>Untuk menggabungkan tabel pada MySQL, kita gunakan klausa\u00a0<code>JOIN.<\/code>\u00a0Pada MySQL terdapat dua macam bentuk join, yaitu <code>INNER JOIN<\/code>, <code>LEFT OUTER JOIN<\/code>, dan <code>RIGHT OUTER JOIN<\/code>. Format penulisannya adalah sebagai berikut:<\/p>\n<pre class=\"aphph-container line-numbers language-sql\"><code class=\" language-sql\"><span class=\"token keyword\">SELECT<\/span> nama_kolom\r\n<span class=\"token keyword\">FROM<\/span> tabel\r\n<span class=\"token keyword\">INNER<\/span> <span class=\"token keyword\">JOIN<\/span> <span class=\"token operator\">|<\/span> <span class=\"token keyword\">LEFT<\/span> <span class=\"token keyword\">OUTER<\/span> <span class=\"token keyword\">JOIN<\/span> <span class=\"token operator\">|<\/span> <span class=\"token keyword\">RIGHT<\/span> <span class=\"token keyword\">OUTER<\/span> <span class=\"token keyword\">JOIN<\/span> tabel <span class=\"token keyword\">ON<\/span> kondisi<\/code><\/pre>\n<p>Selain menggunakan klausa <code>ON<\/code> untuk mendefinisikan kondisi, kita dapat menggunakan klausa <code>USING<\/code>, format penulisannya adalah:<\/p>\n<pre class=\"aphph-container line-numbers language-sql\"><code class=\" language-sql\"><span class=\"token keyword\">SELECT<\/span> nama_kolom\r\n<span class=\"token keyword\">FROM<\/span> tabel\r\n<span class=\"token keyword\">INNER<\/span> <span class=\"token keyword\">JOIN<\/span> <span class=\"token operator\">|<\/span> <span class=\"token keyword\">LEFT<\/span> <span class=\"token keyword\">OUTER<\/span> <span class=\"token keyword\">JOIN<\/span> <span class=\"token operator\">|<\/span> <span class=\"token keyword\">RIGHT<\/span> <span class=\"token keyword\">OUTER<\/span> <span class=\"token keyword\">JOIN<\/span> tabel <span class=\"token keyword\">USING<\/span><span class=\"token punctuation\">(<\/span>nama_kolom<span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p>Klausa <code>USING<\/code> ini akan menggunakan nama kolom yang ada di dalam tanda kurung untuk menghubungkan kedua tabel, kolom ini harus ada pada tabel yang ingin dihubungkan dan harus memiliki nama yang sama.<\/p>\n<p>Biasanya kolom yang berhubungan didefinisikan sebagai \u00a0<code>Primary Key<\/code> dan <code>Foreign Key<\/code>, namun tidak masalah jika keduanya bukan primary key maupun foreign key.<\/p>\n<h2>II. INNER atau CROSS JOIN<\/h2>\n<p>Cara pertama untuk menggabungkan tabel adalah menggunakan inner join. Dengan inner join, tabel akan digabungkan berdasarkan data yang sama, yang ada pada kedua tabel, jika di gambarkan dalam bentuk diagram venn, bentuk inner join seperti tampak pada gambar berikut:<\/p>\n<p><a href=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Menampilkan-Data-Dari-Beberapa-Tabel-MySQL-Ilustrasi-Inner-Join.png\"><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-2044 aligncenter lazy-loaded\" src=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Menampilkan-Data-Dari-Beberapa-Tabel-MySQL-Ilustrasi-Inner-Join.png\" sizes=\"(max-width: 187px) 100vw, 187px\" srcset=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Menampilkan-Data-Dari-Beberapa-Tabel-MySQL-Ilustrasi-Inner-Join.png 187w, https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Menampilkan-Data-Dari-Beberapa-Tabel-MySQL-Ilustrasi-Inner-Join-150x93.png 150w\" alt=\"Menampilkan Data Dari Beberapa Tabel MySQL - Ilustrasi Inner Join\" width=\"187\" height=\"116\" data-lazy-type=\"image\" data-src=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Menampilkan-Data-Dari-Beberapa-Tabel-MySQL-Ilustrasi-Inner-Join.png\" data-srcset=\"\" \/><\/a><\/p>\n<p>Pada MySQL, penulisan INNER JOIN dapat dilakukan dengan dua cara yaitu (1) menggunakan klausa <code>INNER JOIN<\/code> (2) menggunakan klausa <code>CROSS JOIN<\/code> (3) cukup menggunakan klausa <code>JOIN<\/code> saja. Sobat bebas menggunakan keduanya asal konsisten, saya pribadi lebih \u00a0prefer menggunakan <code>JOIN<\/code> saja, karena lebih simpel.<\/p>\n<p>Sebagai contoh kita akan menampilkan data pelanggan yang melakukan pesanan, query yang kita jalankan:<\/p>\n<pre class=\"aphph-container line-numbers language-sql\"><code class=\" language-sql\"><span class=\"token keyword\">SELECT<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan<span class=\"token punctuation\">,<\/span> nama<span class=\"token punctuation\">,<\/span> tgl_transaksi<span class=\"token punctuation\">,<\/span> total_transaksi\r\n<span class=\"token keyword\">FROM<\/span> pelanggan pl\r\n<span class=\"token keyword\">JOIN<\/span> penjualan pn <span class=\"token keyword\">ON<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan <span class=\"token operator\">=<\/span> pn<span class=\"token punctuation\">.<\/span>id_pelanggan<\/code><\/pre>\n<p>Jika menggunakan klausa <code>USING<\/code>, maka query akan berbentuk seperti berikut:<\/p>\n<pre class=\"aphph-container line-numbers language-sql\"><code class=\" language-sql\"><span class=\"token keyword\">SELECT<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan<span class=\"token punctuation\">,<\/span> nama<span class=\"token punctuation\">,<\/span> tgl_transaksi<span class=\"token punctuation\">,<\/span> total_transaksi\r\n<span class=\"token keyword\">FROM<\/span> pelanggan pl\r\n<span class=\"token keyword\">JOIN<\/span> penjualan pn <span class=\"token keyword\">USING<\/span><span class=\"token punctuation\">(<\/span>id_pelanggan<span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p>Hasil:<\/p>\n<pre>+--------------+---------+---------------+-----------------+\r\n| id_pelanggan | nama    | tgl_transaksi | total_transaksi |\r\n+--------------+---------+---------------+-----------------+\r\n|            1 | Alfa    | 2017-02-22    |          230000 |\r\n|            3 | Charlie | 2017-02-22    |          195000 |\r\n|            2 | Beta    | 2017-01-01    |         1710000 |\r\n|            1 | Alfa    | 2017-02-04    |          310000 |\r\n+--------------+---------+---------------+-----------------+<\/pre>\n<p>Pada contoh diatas, terlihat bahwa<\/p>\n<ul>\n<li>Pelanggan dengan nama Delta\u00a0tidak muncul, hal ini disebabkan pelanggan tersebut tidak pernah melakukan transaksi.<\/li>\n<li>Transaksi dengan id_trx 5 tidak muncul, karena transaksi tersebut memiliki nilai id_transaksi <code>NULL<\/code>, sehingga tidak terhubung ke pelanggan manapun.<\/li>\n<\/ul>\n<h2>II. OUTER JOIN<\/h2>\n<p>Cara kedua untuk menggabungkan tabel pada MySQL adalah menggunakan outer join. Pada outer join, data pada salah satu tabel akan ditampilkan semua, sedangkan data pada tabel yang lain hanya akan ditampilkan jika data tersebut ada pada tabel pertama.<\/p>\n<p>Pada MySQL, OUTER JOIN dibagi menjadi dua, yaitu <code>LEFT OUTER JOIN<\/code> dan <code>RIGHT OUTER JOIN<\/code>.<\/p>\n<h3 class=\"aph-hnum\">1 LEFT OUTER JOIN<\/h3>\n<p>Pada <code>LEFT OUTER JOIN<\/code>, semua data pada tabel sebelah kiri akan ditampilkan, sedangkan data pada tabel disebelah kanan hanya akan ditampilkan jika data terkait pada tabel tersebut muncul di tabel sebelah kiri.<\/p>\n<p>Jika di gambarkan dalam bentuk diagram venn, bentuk <code>LEFT OUTER JOIN<\/code> tampak pada gambar berikut:<\/p>\n<p><a href=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Ilustrasi-Left-Outer-Join.png\"><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-2045 aligncenter lazy-loaded\" src=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Ilustrasi-Left-Outer-Join.png\" sizes=\"(max-width: 185px) 100vw, 185px\" srcset=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Ilustrasi-Left-Outer-Join.png 185w, https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Ilustrasi-Left-Outer-Join-150x94.png 150w\" alt=\"Ilustrasi Left Outer Join\" width=\"185\" height=\"116\" data-lazy-type=\"image\" data-src=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Ilustrasi-Left-Outer-Join.png\" data-srcset=\"\" \/><\/a><\/p>\n<p><code>LEFT OUTER JOIN<\/code> dapat ditulis menggunakan dua cara, yaitu (1) dengan klausa <code>LEFT OUTER JOIN<\/code>, (2) cukup dengan klausa <code>LEFT JOIN<\/code> saja, sobat bebas memilih salah satu yang penting konsisten, saya sendiri prefer menggunakan bentuk kedua karena lebih simpel.<\/p>\n<p>Contoh kita tampilkan semua data pelanggan beserta data transaksinya, jalankan query berikut:<\/p>\n<pre class=\"aphph-container line-numbers language-sql\"><code class=\" language-sql\"><span class=\"token keyword\">SELECT<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan<span class=\"token punctuation\">,<\/span> nama<span class=\"token punctuation\">,<\/span> tgl_transaksi<span class=\"token punctuation\">,<\/span> total_transaksi\r\n<span class=\"token keyword\">FROM<\/span> pelanggan pl\r\n<span class=\"token keyword\">LEFT<\/span> <span class=\"token keyword\">JOIN<\/span> penjualan <span class=\"token keyword\">USING<\/span><span class=\"token punctuation\">(<\/span>id_pelanggan<span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p>Hasil:<\/p>\n<pre>+--------------+---------+---------------+-----------------+\r\n| id_pelanggan | nama    | tgl_transaksi | total_transaksi |\r\n+--------------+---------+---------------+-----------------+\r\n|            1 | Alfa    | 2017-02-22    |          230000 |\r\n|            3 | Charlie | 2017-02-22    |          195000 |\r\n|            2 | Beta    | 2017-01-01    |         1710000 |\r\n|            1 | Alfa    | 2017-02-04    |          310000 |\r\n|            4 | Delta   | NULL          |            NULL |\r\n+--------------+---------+---------------+-----------------+<\/pre>\n<p>Pada contoh diatas, terlihat bahwa dengan <code>LEFT JOIN<\/code>, data pada tabel sebelah kiri, yaitu tabel <code>pelanggan<\/code> akan ditampilkan semua, sedangkan data pada tabel sebelah kanan hanya akan ditampilkan jika nilai kolom id_pelanggan nya muncul pada tabel pertama, yaitu id_pelanggan 1, 2, dan 3<\/p>\n<h3 class=\"aph-hnum\">2 RIGHT OUTER JOIN<\/h3>\n<p>Kebalikan dari <code>LEFT OUTER JOIN<\/code>, pada <code>RIGHT OUTER JOIN<\/code>, data pada tabel sebelah kanan akan ditampilkan semua, sedangkan data pada sebelah kiri hanya ditampilkan jika data terkait pada tabel tersebut muncul pada tabel sebelah kanan.<\/p>\n<p>Jika digambarkan dalam bentuk diagram venn, maka, bentuk right outer join akan tampak seperti gambar berikut:<\/p>\n<p><a href=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Ilustrasi-Right-Outer-Join.png\"><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-2046 aligncenter lazy-loaded\" src=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Ilustrasi-Right-Outer-Join.png\" sizes=\"(max-width: 188px) 100vw, 188px\" srcset=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Ilustrasi-Right-Outer-Join.png 188w, https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Ilustrasi-Right-Outer-Join-150x89.png 150w\" alt=\"Ilustrasi Right Outer Join\" width=\"188\" height=\"111\" data-lazy-type=\"image\" data-src=\"https:\/\/jagowebdev.com\/wp-content\/uploads\/2017\/02\/Ilustrasi-Right-Outer-Join.png\" data-srcset=\"\" \/><\/a><\/p>\n<p>Sama seperti <code>LEFT OUTER JOIN<\/code>, <code>RIGHT OUTER JOIN<\/code>\u00a0juga dapat ditulis menggunakan dua cara, yaitu\u00a0ditulis secara utuh atau cukup <code>RIGHT JOIN<\/code> saja. Saya sendiri lebih prefer menggunakan <code>RIGHT JOIN<\/code> saja.<\/p>\n<p>Contoh kita tampilkan semua data transaksi beserta data pelanggannya, jalankan query berikut:<\/p>\n<pre class=\"aphph-container line-numbers language-sql\"><code class=\" language-sql\"><span class=\"token keyword\">SELECT<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan<span class=\"token punctuation\">,<\/span> nama<span class=\"token punctuation\">,<\/span> tgl_transaksi<span class=\"token punctuation\">,<\/span> total_transaksi\r\n<span class=\"token keyword\">FROM<\/span> pelanggan pl\r\n<span class=\"token keyword\">RIGHT<\/span> <span class=\"token keyword\">JOIN<\/span> penjualan <span class=\"token keyword\">USING<\/span><span class=\"token punctuation\">(<\/span>id_pelanggan<span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p>Hasil:<\/p>\n<pre>+--------------+---------+--------------+---------------+-----------------+\r\n| id_pelanggan | nama    | id_transaksi | tgl_transaksi | total_transaksi |\r\n+--------------+---------+--------------+---------------+-----------------+\r\n|            1 | Alfa    |            1 | 2017-02-22    |          230000 |\r\n|            1 | Alfa    |            4 | 2017-02-04    |          310000 |\r\n|            2 | Beta    |            3 | 2017-01-01    |         1710000 |\r\n|            3 | Charlie |            2 | 2017-02-22    |          195000 |\r\n|         NULL | NULL    |            5 | 2017-02-10    |           80000 |\r\n+--------------+---------+--------------+---------------+-----------------+<\/pre>\n<p>Pada contoh diatas, terlihat bahwa semua data pada tabel disebelah kanan, yaitu tabel <code>penjualan<\/code>\u00a0akan ditampilkan semua, sedangkan pada tabel sebelah kiri hanya ditampilkan yang data <code>id_pelanggan<\/code> nya muncul pada tabel penjualan.<\/p>\n<h3>Perlukah RIGHT JOIN?<\/h3>\n<p>Jika kita teliti lebih lanjut, sebenarnya right join hanya memindah posisi tabel, dari kiri ke kanan, contoh query pada right join dapat kita ubah dengan menjadi <code>LEFT JOIN<\/code> dengan mengubah posisi tabel, perhatikan contoh berikut:<\/p>\n<pre class=\"aphph-container line-numbers language-sql\"><code class=\" language-sql\"><span class=\"token keyword\">SELECT<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan<span class=\"token punctuation\">,<\/span> nama<span class=\"token punctuation\">,<\/span> id_transaksi<span class=\"token punctuation\">,<\/span> tgl_transaksi<span class=\"token punctuation\">,<\/span> total_transaksi\r\n<span class=\"token keyword\">FROM<\/span> penjualan pl\r\n<span class=\"token keyword\">LEFT<\/span> <span class=\"token keyword\">JOIN<\/span> pelanggan <span class=\"token keyword\">USING<\/span><span class=\"token punctuation\">(<\/span>id_pelanggan<span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p>Perhatikan pada contoh diatas, kita balik posisi tabel <code>penjualan<\/code> dan tabel <code>pelanggan<\/code>. Jika query terebut dijalankan, hasil yang kita peroleh adalah:<\/p>\n<pre>+--------------+---------+--------------+---------------+-----------------+\r\n| id_pelanggan | nama    | id_transaksi | tgl_transaksi | total_transaksi |\r\n+--------------+---------+--------------+---------------+-----------------+\r\n|            1 | Alfa    |            1 | 2017-02-22    |          230000 |\r\n|            1 | Alfa    |            4 | 2017-02-04    |          310000 |\r\n|            2 | Beta    |            3 | 2017-01-01    |         1710000 |\r\n|            3 | Charlie |            2 | 2017-02-22    |          195000 |\r\n|         NULL | NULL    |            5 | 2017-02-10    |           80000 |\r\n+--------------+---------+--------------+---------------+-----------------+<\/pre>\n<p>Perhatikan bahwa hasil diatas sama persis dengan hasil pada contoh right join, jadi kesimpulannya, agar memudahkan, cukup gunakan salah satu bentuk outer join saja, <code>LEFT JOIN<\/code> atau <code>RIGHT JOIN<\/code>, saya sendiri prefer menggunakan <code>LEFT JOIN<\/code>.<\/p>\n<h2>III. IMPLISIT JOIN<\/h2>\n<p>Sejauh ini, kita menampilkan data dari beberapa tabel MySQL dengan menggunakan klausa JOIN.<\/p>\n<p>Selain menggunakan klausa <code>JOIN<\/code>, terdapat satu cara lagi untuk menggabungkan tabel MySQL, yaitu menggunakan implisit join, disebut implisit join karena kita tidak menggunakan klausa <code>JOIN<\/code>, pada implisit join, kriteria hubungan antar tabel di definisikan pada klausa <code>WHERE<\/code>.<\/p>\n<p>Sebagai contoh, mari kita gabungkan tabel pelanggan dan penjualan, jalankan query berikut:<\/p>\n<pre class=\"aphph-container line-numbers language-sql\"><code class=\" language-sql\"><span class=\"token keyword\">SELECT<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan<span class=\"token punctuation\">,<\/span> nama<span class=\"token punctuation\">,<\/span> id_transaksi<span class=\"token punctuation\">,<\/span> tgl_transaksi<span class=\"token punctuation\">,<\/span> total_transaksi\r\n<span class=\"token keyword\">FROM<\/span> pelanggan pl<span class=\"token punctuation\">,<\/span> penjualan pn\r\n<span class=\"token keyword\">WHERE<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan <span class=\"token operator\">=<\/span> pn<span class=\"token punctuation\">.<\/span>id_pelanggan<\/code><\/pre>\n<p>Hasil yang kita peroleh:<\/p>\n<pre>+--------------+---------+--------------+---------------+-----------------+\r\n| id_pelanggan | nama    | id_transaksi | tgl_transaksi | total_transaksi |\r\n+--------------+---------+--------------+---------------+-----------------+\r\n|            1 | Alfa    |            1 | 2017-02-22    |          230000 |\r\n|            3 | Charlie |            2 | 2017-02-22    |          195000 |\r\n|            2 | Beta    |            3 | 2017-01-01    |         1710000 |\r\n|            1 | Alfa    |            4 | 2017-02-04    |          310000 |\r\n+--------------+---------+--------------+---------------+-----------------+<\/pre>\n<p>Perhatikan bahwa hasil tersebut sama persis dengan hasil pada contoh <code>INNER JOIN<\/code>, sehingga dapat disimpulkan bahwa implisit join = inner join.<\/p>\n<p>Implisit join mensyaratkan kedua tabel memiliki data yang sama ( <code>WHERE pl.id_pelanggan = pn.id_pelanggan<\/code>\u00a0), sehingga implisit join ini hanya berlaku pada <code>INNER JOIN<\/code>, dan tidak bisa digunakan untuk <code>OUTER JOIN<\/code>.<\/p>\n<p>Implisit JOIN ini merupakan cara lama ketika pertama kali standar SQL dibuat, setelah muncul standar yang lebih baru (SQL2) maka mulai digunakanlah klausa <code>JOIN<\/code>. Saya sendiri prefer menggunakan klausa <code>JOIN<\/code> karena lebih mudah dibaca dan dipahami, terutama hubungan antara tabel yang digabungkan.<\/p>\n<p>Pada bentuk klausa <code>JOIN<\/code>, hubungan antar tabel dinyatakan pada klausa <code>ON<\/code> atau <code>USING<\/code>, sedangkan filter datanya dilakukan pada klausa <code>WHERE<\/code>, misal:<\/p>\n<pre class=\"aphph-container line-numbers language-sql\"><code class=\" language-sql\"><span class=\"token keyword\">SELECT<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan<span class=\"token punctuation\">,<\/span> nama<span class=\"token punctuation\">,<\/span> id_transaksi<span class=\"token punctuation\">,<\/span> tgl_transaksi<span class=\"token punctuation\">,<\/span> total_transaksi\r\n<span class=\"token keyword\">FROM<\/span> pelanggan pl\r\n<span class=\"token keyword\">LEFT<\/span> <span class=\"token keyword\">JOIN<\/span> penjualan pn <span class=\"token keyword\">USING<\/span> <span class=\"token punctuation\">(<\/span>id_pelanggan<span class=\"token punctuation\">)<\/span>\r\n<span class=\"token keyword\">WHERE<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan <span class=\"token operator\">=<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">OR<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan <span class=\"token operator\">=<\/span> <span class=\"token number\">1<\/span><\/code><\/pre>\n<p>sedangkan pada implisit <code>JOIN<\/code>, hubungan antar tabel dan filter datanya, semua didefinisikan pada klausa <code>WHERE<\/code>, misal:<\/p>\n<pre class=\"aphph-container line-numbers language-sql\"><code class=\" language-sql\"><span class=\"token keyword\">SELECT<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan<span class=\"token punctuation\">,<\/span> nama<span class=\"token punctuation\">,<\/span> id_transaksi<span class=\"token punctuation\">,<\/span> tgl_transaksi<span class=\"token punctuation\">,<\/span> total_transaksi\r\n<span class=\"token keyword\">FROM<\/span> pelanggan pl<span class=\"token punctuation\">,<\/span> penjualan pn\r\n<span class=\"token keyword\">WHERE<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan <span class=\"token operator\">=<\/span> pn<span class=\"token punctuation\">.<\/span>id_pelanggan\r\n\t<span class=\"token operator\">AND<\/span> <span class=\"token punctuation\">(<\/span>pl<span class=\"token punctuation\">.<\/span>id_pelanggan <span class=\"token operator\">=<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">OR<\/span> pl<span class=\"token punctuation\">.<\/span>id_pelanggan <span class=\"token operator\">=<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><\/code><\/pre>\n<p>Demikian pembahasan mengenai cara menampilkan data dari beberapa tabel MySQL, semoga bermanfaat.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pada kesempatan kali ini kita akan membahas query untuk menampilkan data dari beberapa tabel MySQL. Pada tutorial ini sobat juga akan belajar bagaimana menggunakan JOIN pada MySQL. Ketika menampilkan data yang disimpan dari database, seringnya kita akan mengambil data dari beberapa tabel untuk diolah sehingga menjadi satu keluaran,\u00a0misal pada laporan penjualan. Pada model database relasional [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":""},"categories":[11],"tags":[65,66,67],"_links":{"self":[{"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/posts\/523"}],"collection":[{"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/comments?post=523"}],"version-history":[{"count":1,"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/posts\/523\/revisions"}],"predecessor-version":[{"id":524,"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/posts\/523\/revisions\/524"}],"wp:attachment":[{"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/media?parent=523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/categories?post=523"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.um-palembang.ac.id\/sayfudin\/wp-json\/wp\/v2\/tags?post=523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}