join with sql.doc

Embed Size (px)

DESCRIPTION

xsbgxb

Citation preview

RSS Feed for This PostCurrent Article

Perintah MySQL untuk Menampilkan Data dari Beberapa Tabel

By anessinaga on Sep 18, 2013 in MySQL

Di dalam suatu RDBMS termasuk MySQL, tentunya sudah menjadi suatu kewajaran jika dalam satu database dapat terdiri dari beberapa tabel. Masing-masing tabel tersebut dapat berhubungan (berelasi) satu sama lain. Relasi antar-tabel dapat berupa relasi 1-1 (one-to-one), 1-M (one-to-many), atau M-N (many-to-many). Sebagai contoh terlihat pada gambar pemodelan data konseptual (class diagram) di bawah ini. Tabel pelanggan berhubungan dengan pesan, pesan dengan barang, dsb.

Pada pembuatan suatu aplikasi, terkadang kita juga memerlukan tampilan data yang tidak hanya berasal dari 1 (satu) tabel, namun bisa dari beberapa tabel sekaligus. Contohnya, dari class diagram di bawah, kita ingin menampilkan nama pelanggan berikut transaksi yang pernah dilakukannya. Dari contoh tersebut, kita harus bisa menggabungkan minimal dua tabel, yaitu pelanggan dan pesan.

Untuk menggabungkan 2 (dua) atau lebih tabel, kita dapat menggunakan bentuk perintah JOIN. Dalam tutorial ini, akan dijelaskan secara bertahap mengenai bagaimana menggabungkan dua tabel atau lebih, terutama untuk menampilkan data yang berasal dari beberapa tabel. Contoh-contoh dalam tutorial ini secara khusus telah dicoba di database MySQL, namun demikian secara umum perintah penggabungan tabel di semua jenis database tidak jauh berbeda alias sama.

Sebelum belajar mengenai perintah penggabungan tabel, perlu dipersiapkan tabel-tabel yang akan dijadikan sebagai bahan latihan dan contoh dalam tutorial ini. Kita akan menggunakan tabel rancangan sistem pemesanan barang (pembelian) sederhana berikut ini. Untuk membuatnya, Anda dapat menggunakan tools seperti PHPMyAdmin dan MySQLFront atau dapat juga melalui command-prompt. Jika diperlukan, pelajari kembali postingan saya sebelumnya mengenai administrasi database MySQL dengan PHPMyAdmin dan juga dasar-dasar perintah SQL. Jangan lupa isikan beberapa contoh data ke tabel-tabel yang sudah Anda buat.

Contoh Class Diagram Sistem Pembelian

Contoh Class Diagram Sistem Pembelian

1. Inner Join

Dengan inner join, tabel akan digabungkan dua arah, sehingga tidak ada data yang NULL di satu sisi. Sebagai contoh, kita akan menggabungkan tabel pelanggan dan pesan dimana kita akan menampilkan daftar pelanggan yang pernah melakukan pemesanan (transaksi). Misalkan isi tabel pelanggan dan pesan adalah sebagai berikut :

Tabel pelanggan (hanya ditampilkan field id_pelanggan, nm_pelanggan dan email)

Contoh isi tabel pelanggan

Contoh isi tabel pelanggan

Tabel pesan.

Contoh isi tabel pesan

Contoh isi tabel pesan

Cara #1. Inner Join dengan WHERE.

Penggabungan dengan klausa WHERE memiliki bentuk umum sebagai berikut:

SELECT tabel1.*, tabel2.* FROM tabel1, tabel2

WHERE tabel1.PK=tabel2.FK;

Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan

FROM pelanggan, pesan

WHERE pelanggan.id_pelanggan=pesan.id_pelanggan;

Hasilnya sebagai berikut:

Hasil Penggabungan 2 Tabel dengan Where

Hasil Penggabungan 2 Tabel dengan WHERE

Pada hasil perintah query di atas terlihat bahwa terdapat 5 (lima) transaksi yang dilakukan oleh 3 (tiga) orang pelanggan. Jika kita lihat kembali isi tabel pelanggan di atas, maka terdapat satu pelanggan yang tidak ditampilkan yaitu yang memiliki id pelanggan P0003. Pelanggan tersebut tidak ditampilkan karena belum pernah melakukan transaksi.

Cara #1. Inner Join dengan klausa INNER JOIN.

Berikut ini bentuk umumnya:

SELECT tabel1.*, tabel2.*

FROM tabel1 INNER JOIN tabel2

ON tabel1.PK=tabel2.FK;

Dan berikut ini perintah SQL penggabungan tabel pelanggan dan pesan.

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan

FROM pelanggan INNER JOIN pesan

ON pelanggan.id_pelanggan=pesan.id_pelanggan;

Hasilnya akan sama dengan gambar di atas (cara #1).

2. Outer Join

Dengan outer join, tabel akan digabungkan satu arah, sehingga memungkinkan ada data yang NULL (kosong) di satu sisi. Sebagai contoh, kita akan menggabungkan tabel pelanggan dan pesan dimana kita akan menampilkan daftar pelanggan yang pernah melakukan pemesanan (transaksi).

Outer Join terbagi menjadi 2 (dua) yaitu LEFT JOIN dan RIGHT JOIN. Berikut ini bentuk umum dan contohnya:

LEFT JOIN.

Bentuk umum:

SELECT tabel1.*, tabel2.*

FROM tabel1 LEFT JOIN tabel2

ON tabel1.PK=tabel2.FK;

Contoh perintah SQL:

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan

FROM pelanggan LEFT JOIN pesan

ON pelanggan.id_pelanggan=pesan.id_pelanggan;

Hasilnya:

Hasil Perintah Left Join

Hasil Perintah Left Join

Berbeda dengan hasil sebelumnya (inner join), penggunaan left join akan menampilkan juga data pelanggan dengan id P0003, walaupun pelanggan tersebut belum pernah bertransaksi. Dan pada kolom id_pesan dan tgl_pesan untuk pelanggan P0003 isinya NULL, artinya di tabel kanan (pesan) pelanggan tersebut tidak ada.

RIGHT JOIN

Bentuk umum:

SELECT tabel1.*, tabel2.*

FROM tabel1 RIGHT JOIN tabel2

ON tabel1.PK=tabel2.FK;

Contoh perintah SQL:

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan, pesan.tgl_pesan

FROM pelanggan RIGHT JOIN pesan

ON pelanggan.id_pelanggan=pesan.id_pelanggan;

Hasilnya:

Hasil Perintah Right Join

Hasil Perintah Right Join

Dengan right join, tabel yang menjadi acuan adalah tabel sebelah kanan (tabel pesan), jadi semua isi tabel pesan akan ditampilkan. Jika data pelanggan tidak ada di tabel pelanggan, maka isi tabel pesan tetap ditampilkan.

Menggabungkan 3 Tabel atau Lebih

Untuk menggabungkan tiga tabel atau lebih, pada dasarnya sama dengan penggabungan 2 (dua) tabel. Sebagai contoh misalnya kita akan menampilkan barang-barang yang dipesan beserta nama barang dan harganya untuk pemesanan dengan nomor 1, sedemikian sehingga hasilnya menjadi sebagai berikut:

Contoh Hasil Penggabungan 3 Tabel

Contoh Hasil Penggabungan 3 Tabel

Bagaimana perintah SQL-nya? Hayoo, siapa bisa? silahkan jawab di bagian komentar tutorial di bawah ini.SQL (Structured Query Language) adalah sebuah bahasa yang digunakan untuk mengakses data dalam relasi database. Bahasa query ini merupakan bahasa standart yang digunakan dalam memanajemen database. Query ini merupakan standar ANSI bahasa pemrograman komputer SQL yang dapat menjalankan query terhadap database. SQL dapat menambahkan data, mengedit data, menghapus data dan menampilkan data.

Sesuai kegunaan dan perkembangannya, SQL memiliki beberapa versi, tetapi agar tidak terjadi kekeliruan dibuat standar oleh ANSI, mereka harus memiliki keywords utama yang dipakai secara umum yaitu (SELECT, UPDATE, DELETE, INSERT). SELECT untuk menampilkan isi data. UPDATE untuk mengubah data, DELETE untuk menghapus data, INSERT untuk menambahkan data.

Saya akan membahas query database untuk menggabungkan 3 Tabel dalam satu database. Ini bermula dari proyek saya yang harus menampilkan isi dari 3 tabel yang saling terhubung melalui foreign key.

Dari contoh berikut ini terdapat 3 tabel yaitu: biodata_mahasiswa, status_fakjur, status_jenis_kelamin.

biodata_mahasiswa terdiri dari kolom: nim_biodata, nama_biodata, kode_fakjur (merupakan foreign key dari tabel status_fakjur), id_jenis_kelamin (foreign key dari tabel status_jenis_kelamin)

status_fakjur terdiri dari kolom: kode_fakjur, nama_fakultas_fakjur

status_jenis_kelamin terdiri dari kolom: id_jenis_kelamin, jenis_kelamin

Jadi untuk menampilkan isi dari ketiga tabel tersebut adalah dengan menggunakan perintah berikut:

SELECT bm.nim_biodata, bm.nama_biodata, bm.kode_fakjur, sf.nama_fakultas_fakjur, sjk.jenis_kelamin

FROM (biodata_mahasiswa bm LEFT JOIN status_fakjur sf ON bm.kode_fakjur = sf.kode_fakjur)

LEFT JOIN status_jenis_kelamin sjk ON bm.id_jenis_kelamin = sjk.id_jenis_kelamin;

Berikut adalah tampilan dari hasil query tersebut: