Pada kesempatan kali ini kita akan membahas query untuk menampilkan data dari beberapa tabel MySQL. Pada tutorial ini sobat juga akan belajar bagaimana menggunakan Show Ketika menampilkan data yang disimpan dari database, seringnya kita akan mengambil data dari beberapa tabel untuk diolah sehingga menjadi satu keluaran, misal pada laporan penjualan. 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 bermacam macam, bisa one-to-one relationship, one-to-many, dan many-to-many PersiapanSebelum melangkah lebih jauh, kita perlu menyiapkan tabel yang akan kita gunakan dalam tutorial ini. Pada contoh kali ini, saya menggunakan empat tabel, yaitu: tabel Dari keempat tabel tersebut, kita hanya menggunakan beberapa diantaranya. Adapun contoh datanya adalah sebagai berikut: Tabel
Tabel +--------------+---------+-------------------+ | id_pelanggan | nama | email | +--------------+---------+-------------------+ | 1 | Alfa | | | 2 | Beta | | | 3 | Charlie | | | 4 | Delta | | +--------------+---------+-------------------+ Tabel +--------------+--------------+---------------+-----------------+ | id_transaksi | id_pelanggan | tgl_transaksi | total_transaksi | +--------------+--------------+---------------+-----------------+ | 1 | 1 | 2017-02-22 | 230000 | | 2 | 3 | 2017-02-22 | 195000 | | 3 | 2 | 2017-01-01 | 1710000 | | 4 | 1 | 2017-02-04 | 310000 | | 5 | NULL | 2017-02-10 | 80000 | +--------------+--------------+---------------+-----------------+ I. JOIN Pada MySQLUntuk menggabungkan tabel pada MySQL, kita gunakan klausaÂÂ
Selain menggunakan klausa
Klausa Biasanya kolom yang berhubungan didefinisikan sebagai  II. INNER atau CROSS JOINCara 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: Pada MySQL, penulisan INNER JOIN dapat dilakukan dengan dua cara yaitu (1) menggunakan klausa Sebagai contoh kita akan menampilkan data pelanggan yang melakukan pesanan, query yang kita jalankan:
Jika menggunakan
klausa
Hasil: +--------------+---------+---------------+-----------------+ | id_pelanggan | nama | tgl_transaksi | total_transaksi | +--------------+---------+---------------+-----------------+ | 1 | Alfa | 2017-02-22 | 230000 | | 3 | Charlie | 2017-02-22 | 195000 | | 2 | Beta | 2017-01-01 | 1710000 | | 1 | Alfa | 2017-02-04 | 310000 | +--------------+---------+---------------+-----------------+ Pada contoh diatas, terlihat bahwa
II. OUTER JOINCara 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. Pada MySQL, OUTER JOIN dibagi menjadi dua, yaitu 1 LEFT OUTER JOINPada Jika di gambarkan dalam bentuk diagram venn, bentuk
Contoh kita tampilkan semua data pelanggan beserta data transaksinya, jalankan query berikut:
Hasil: +--------------+---------+---------------+-----------------+ | id_pelanggan | nama | tgl_transaksi | total_transaksi | +--------------+---------+---------------+-----------------+ | 1 | Alfa | 2017-02-22 | 230000 | | 3 | Charlie | 2017-02-22 | 195000 | | 2 | Beta | 2017-01-01 | 1710000 | | 1 | Alfa | 2017-02-04 | 310000 | | 4 | Delta | NULL | NULL | +--------------+---------+---------------+-----------------+ Pada contoh diatas, terlihat bahwa dengan 2 RIGHT  OUTER JOINKebalikan dari Jika digambarkan dalam bentuk diagram venn, maka, bentuk right outer join akan tampak seperti gambar berikut: Sama seperti Contoh kita tampilkan semua data transaksi beserta data pelanggannya, jalankan query berikut:
Hasil: +--------------+---------+--------------+---------------+-----------------+ | id_pelanggan | nama | id_transaksi | tgl_transaksi | total_transaksi | +--------------+---------+--------------+---------------+-----------------+ | 1 | Alfa | 1 | 2017-02-22 | 230000 | | 1 | Alfa | 4 | 2017-02-04 | 310000 | | 2 | Beta | 3 | 2017-01-01 | 1710000 | | 3 | Charlie | 2 | 2017-02-22 | 195000 | | NULL | NULL | 5 | 2017-02-10 | 80000 | +--------------+---------+--------------+---------------+-----------------+ Pada contoh diatas, terlihat bahwa semua data pada tabel disebelah kanan, yaitu tabel Perlukah RIGHT JOIN?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
Perhatikan pada contoh diatas, kita balik posisi tabel +--------------+---------+--------------+---------------+-----------------+ | id_pelanggan | nama | id_transaksi | tgl_transaksi | total_transaksi | +--------------+---------+--------------+---------------+-----------------+ | 1 | Alfa | 1 | 2017-02-22 | 230000 | | 1 | Alfa | 4 | 2017-02-04 | 310000 | | 2 | Beta | 3 | 2017-01-01 | 1710000 | | 3 | Charlie | 2 | 2017-02-22 | 195000 | | NULL | NULL | 5 | 2017-02-10 | 80000 | +--------------+---------+--------------+---------------+-----------------+ Perhatikan bahwa hasil diatas sama persis dengan hasil pada contoh right join, jadi kesimpulannya, agar memudahkan, cukup gunakan salah satu bentuk outer join saja, III. IMPLISIT JOINSejauh ini, kita menampilkan data dari beberapa tabel MySQL dengan menggunakan klausa JOIN. Selain menggunakan klausa Sebagai contoh, mari kita gabungkan tabel pelanggan dan penjualan, jalankan query berikut:
Hasil yang kita peroleh: +--------------+---------+--------------+---------------+-----------------+ | id_pelanggan | nama | id_transaksi | tgl_transaksi | total_transaksi | +--------------+---------+--------------+---------------+-----------------+ | 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 Implisit join mensyaratkan kedua tabel memiliki data yang sama ( Implisit JOIN ini merupakan cara lama ketika pertama kali
standar SQL dibuat, setelah muncul standar yang lebih baru (SQL2) maka mulai digunakanlah klausa Pada bentuk klausa
sedangkan pada implisit
Demikian pembahasan mengenai cara menampilkan data dari beberapa tabel MySQL, semoga bermanfaat. Subscibe NowSuka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com |