MySQL: Perintah Query untuk Mencari Record yang Tidak Ada di Tabel Lain (Achmatim.net)
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

MySQL: Perintah Query untuk Mencari Record yang Tidak Ada di Tabel Lain (Achmatim.net)

on

  • 6,437 views

Pada tutorial ini akan dibahas mengenai perintah query untuk mencari atau menampilkan record yang ada di suatu tabel namun tidak ada di tabel yang lainnya, seperti pada kasus peminjaman dan ...

Pada tutorial ini akan dibahas mengenai perintah query untuk mencari atau menampilkan record yang ada di suatu tabel namun tidak ada di tabel yang lainnya, seperti pada kasus peminjaman dan pengembalian buku perpustakaan di atas. Seluruh perintah query dalam tutorial ini diujicobakan dalam database MySQL. Dan sebelum melanjutkan tutorial ini, alangkah baiknya jika Anda mengenal terlebih dahulu perintah-perintah dasar MySQL dan bagaimana perintah penggabungan (join) beberapa tabel di MySQL. Semoga tutorial ini bermanfaat untuk kita semua. Selengkapnya: http://achmatim.net/2013/05/19/mysql-perintah-query-untuk-mencari-record-yang-tidak-ada-di-tabel-lain/

Statistics

Views

Total Views
6,437
Views on SlideShare
6,437
Embed Views
0

Actions

Likes
0
Downloads
92
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

MySQL: Perintah Query untuk Mencari Record yang Tidak Ada di Tabel Lain (Achmatim.net) Document Transcript

  • 1. MySQL: Perintah Query untuk Mencari Record yang Tidak Ada di Tabel Lain | Achmatim.NetMySQL: Perintah Query untuk MencariRecord yang Tidak Ada di Tabel LainTutorial ini ditulis oleh Achmad Solichindan sudah dipublikasikan di http://achmatim.net pada tanggal 25 Mei 2013Sebagai programmer, saat membangun suatu aplikasi seringkali kita menemukanpermasalahan atau kondisi yang mengharuskan kita melakukan perbandingan record padatabel basis data. Sebagai contoh sederhana adalah pada kasus sistem perpustakaan. Jikadata transaksi peminjaman dan pengembalian terpisah dalam tabel berbeda, maka akantimbul permasalahan saat kita ingin menampilkan buku atau transaksi yang belumdikembalikan. Dengan kata lain, kita harus dapat melakukan perbandingan diantara tabelpeminjaman dan pengembalian. Untuk menampilkan data transaksi yang belumdikembalikan, tentu kita harus mencari record yang ada di tabel peminjaman namun tidakada di tabel pengembalian.Pada tutorial ini akan dibahas mengenai perintah query untuk mencari atau menampilkanrecord yang ada di suatu tabel namun tidak ada di tabel yang lainnya, seperti pada kasuspeminjaman dan pengembalian buku perpustakaan di atas. Seluruh perintah query dalamtutorial ini diujicobakan dalam database MySQL. Dan sebelum melanjutkan tutorial ini,alangkah baiknya jika Anda mengenal terlebih dahulu perintah-perintah dasar MySQL1dan bagaimana perintah penggabungan (join) beberapa tabel di MySQL2. Semoga tutorialini bermanfaat untuk kita semua.Contoh Tabel dan Record: Sistem Informasi PerpustakaanSebagai contoh dalam tutorial ini, dibuat struktur basis data untuk Sistem InformasiPerpustakaan sederhana. Lihat Gambar 1 . Data buku tersimpan di tabel buku, dan untuksetiap copy buku disimpan di tabel copy_buku. Untuk meminjam buku di perpustakaan,peminjam harus menjadi anggota terlebih dahulu. Tidak ada batasan jumlah buku untuksetiap transaksi peminjaman, namun lama peminjaman normal dibatasi hanya 1 minggukalender (tidak memperhitungkan hari libur). Untuk seluruh buku yang dipinjam dalam satutransaksi peminjaman harus dikembalikan bersamaan, dan pengembalian setelah bataswaktu pinjam akan dikenakan denda.1 http://achmatim.net/2009/12/09/pengenalan-perintah-dasar-sql-di-mysql/2 http://achmatim.net/2010/01/18/perintah-mysql-untuk-menampilkan-data-dari-beberapa-tabel/Halaman 1 dari 5
  • 2. MySQL: Perintah Query untuk Mencari Record yang Tidak Ada di Tabel Lain | Achmatim.NetPerintah SQL untuk membuat dan mengisi data pada struktur basis data di atas dapatdiunduh di http://achmatim.net/_downloads/dbperpustakaan.sql.Penggabungan (JOIN) Beberapa TabelDalam pembuatan sistem informasi, seringkali kita membutuhkan penggabungan beberapatabel sekaligus. Untuk melakukan penggabungan tabel, hal utama yang harus diperhatikanadalah setiap tabel yang akan digabungkan harus saling terhubung atau ber-relasi. Sebagaicontoh pada struktur basis data Gambar 1 di atas, tabel anggota dan tabel peminjamandapat digabungkan (di-JOIN) karena terdapat field yang menjadi primary key di tabelanggota dan foreign key di tabel peminjaman, yaitu kd_anggota. Field tersebut-lah yangmenjadi penghubung kedua tabel. Sementara itu, antara tabel anggota dan pengembaliantidak dapat digabung secara langsung karena tidak memiliki field penghubung. Keduanyadapat digabungkan dengan menyertakan tabel peminjaman dalam proses penggabungan.Lebih jelas mengenai perintah penggabungan beberapa tabel di MySQL dapat mempelajaritutorial saya sebelumnya berjudul Perintah MySQL untuk Menampilkan Data DariBeberapa Tabel 3.Menampilkan Transaksi Peminjaman yang Belum KembaliKembali ke permasalahan utama tutorial ini, yaitu menampilkan data di suatu tabel yangtidak ada di tabel yang lainnya. Dalam contoh kasus Sistem Informasi Perpustakaan di atas,kita akan menampilkan transaksi peminjaman yang belum dikembalikan. Data yang akanditampilkan adalah ID Peminjaman, tanggal peminjaman, nama anggota peminjam dan3 http://achmatim.net/2010/01/18/perintah-mysql-untuk-menampilkan-data-dari-beberapa-tabel/Halaman 2 dari 5Gambar 1: Struktur Basis Data Sistem Perpustakaan
  • 3. MySQL: Perintah Query untuk Mencari Record yang Tidak Ada di Tabel Lain | Achmatim.Netbatas akhir pengembalian. Untuk melakukan hal tersebut, kita perlu menggabungkan 3(tiga) buah tabel sekaligus yaitu tabel (1) anggota, (2) peminjaman dan (3) pengembalian.Kita akan menampilkan data yang ada di tabel peminjaman namun belum ada di tabelpengembalian.Perhatikan perintah query sebagai berikut. Antara tabel anggota dan peminjaman dilakukanINNER JOIN sedangkan antara peminjaman dan pengembalian dilakukan LEFT JOIN karenaterdapat kemungkinan data di peminjaman tidak ada di tabel pengembalian. Jika inginmenampilkan data peminjaman yang belum kembali cukup menambahkan kondisi dimanaID pinjam di tabel pengembalian masih kosong (NULL).Query 1: Menampilkan Transaksi Peminjaman yang Belum Kembali1234SELECT b.id_pinjam, b.tgl_pinjam, a.nama, b.tgl_hrskembali FROM anggota a INNER JOIN peminjaman b ON a.kd_anggota=b.kd_anggotaLEFT JOIN pengembalian c ON b.id_pinjam=c.id_pinjamWHERE c.id_pinjam IS NULLCara lain untuk menyelesaikan permasalahan yang sama adalah dengan menggunakansub-query atau sub-select. Cara kedua ini tidak memerlukan join dengan tabelpengembalian.Query 2 : Menampilkan Transaksi Peminjaman yang Belum Kembali (SUB-SELECT)123SELECT b.id_pinjam, b.tgl_pinjam, a.nama, b.tgl_hrskembali FROM anggota a INNER JOIN peminjaman b ON a.kd_anggota=b.kd_anggotaWHERE b.id_pinjam NOT IN (SELECT id_pinjam FROM pengembalian)Kedua query di atas akan menampilkan hasil yang sama, namun demikian query 1 yangmenggunakan JOIN lebih disarankan karena memiliki performa / kecepatan yang lebih baik.Beberapa sumber menyatakan bahwa query JOIN lebih baik dari SUBQUERY dari sisiperforma, diantaranya salah satu diskusi di situs StackOverflow ini 4.Berikut ini hasil dari perintah query diatas.Menampilkan Buku yang Masih Dipinjam (Belum Dikembalikan)Pada dasarnya permasalahan ini sama seperti sebelumnya, hanya saja data yang inginditampilkan adalah data buku, bukan data transaksi peminjaman. Kolom yang akanditampilkan meliputi kode buku, judul buku, nama peminjam, tanggal peminjaman dantanggal harus kembali. Untuk menyelesaikannya, kita perlu melibatkan tabel detil_pinjam4 http://stackoverflow.com/questions/3856164/sql-joins-vs-sql-subqueries-performanceHalaman 3 dari 5
  • 4. MySQL: Perintah Query untuk Mencari Record yang Tidak Ada di Tabel Lain | Achmatim.Netserta tabel terkait buku dan copy buku. Dengan kata lain, kita perlu menggabungkan semuatabel pada Gambar 1.Perhatikan dan pahami query 3 berikut ini.Query 3 : Menampilkan Buku yang Masih Dipinjam (Belum Dikembalikan)12345678SELECT e.kd_buku, e.judul, a.nama, b.tgl_pinjam, b.tgl_hrskembaliFROM anggota a INNER JOIN peminjaman b ON a.kd_anggota=b.kd_anggotaINNER JOIN detil_pinjam c ON b.id_pinjam=c.id_pinjamINNER JOIN copy_buku d ON c.kd_copybuku=d.kd_copybukuINNER JOIN buku e ON d.kd_buku=e.kd_bukuLEFT JOIN pengembalian f ON b.id_pinjam=f.id_pinjamWHERE f.id_pinjam IS NULLORDER BY e.judulHasil dari perintah query 3 di atas sebagai berikut.KesimpulanTutorial ini menjelaskan secara singkat mengenai bagaimana perintah query untuk mencarirecord atau data yang ada di suatu tabel namun tidak ada di tabel yang lainnya. Dalamtutorial ini dicontohkan kasus sistem informasi perpustakaan. Solusi permasalahan dapatmenggunakan query dengan penggabungan LEFT JOIN dan query dengan SUB-SELECT atauSUBQUERY. Keduanya dapat digunakan namun lebih disarankan menggunakan LEFT JOINkarena lebih baik secara performa.Download• Tutorial ini dapat dibaca dan diunduh secara online dihttp://achmatim.net/2013/05/19/mysql-perintah-query-untuk-mencari-record-yang-tidak-ada-di-tabel-lain/Semoga tutorial ini bermanfaat untuk kita semua dan berbagilah hal baik kesebanyak-banyaknya orang maka kebahagiaan akan menghampiri Anda. Satu Karya untukIndonesia!Referensi Terkait• Buku Gratis MySQL: Dari Pemula Hingga Mahir.http://achmatim.net/buku-gratis/mysql-5-dari-pemula-hingga-mahir/Halaman 4 dari 5
  • 5. MySQL: Perintah Query untuk Mencari Record yang Tidak Ada di Tabel Lain | Achmatim.NetTentang PenulisAchmad Solichin. Adalah Lulusan Teknik Informatika, Fakultas TeknologiInformasi, Universitas Budi Luhur, Jakarta (S1, 2005) dan Magister TeknologiInformasi, Universitas Indonesia (S2, 2010). Saat ini sedang menempuhprogram Doktoral dalam bidang Ilmu Komputer di Universitas Gadjah Mada,Jogjakarta. Kegiatan sehari-hari adalah sebagai Dosen di Universitas BudiLuhur (http://www.budiluhur.ac.id). Kegiatan lain aktif sebagai programmer,web developer, system analyst, konsultan dan memberikan pelatihan diberbagai bidang komputer serta membuat tutorial-tutorial praktis di bidangkomputer. Penulis memiliki situs utama di http://achmatim.net yang berisi berbagai tutorialpraktis di bidang komputer serta menyediakan buku gratis komputer. Penulis dapatdihubungi melalui email di achmad.solichin@budiluhur.ac.id dan achmatim@gmail.com, YMachmatim, Facebook achmatim dan Twitter @achmatim.Lisensi DokumenSeluruh isi dalam dokumen ini dapat digunakan, dimodifikasi dandisebarluaskan secara bebas untuk tujuan pendidikan, pembelajaran danbukan komersial (non profit), dengan syarat tidak menghilangkan, menghapus ataumengubah atribut penulis dokumen ini dan pernyataan dalam lisensi dokumen yangdisertakan di setiap dokumen. Tidak diperbolehkan mengkomersialkan tutorial ini kecualimendapatkan ijin terlebih dahulu dari penulis.Halaman 5 dari 5