Friday, June 3, 2016

Generate an Integer Sequence in MySQL

Tags

Berawal dari project aplikasi kost yang sedang saya kerjakan dengan menggunakan PHPRunner, dimana si client meminta untuk daftar pembayaran dari para penghuni kost diberikan nomor urut. awalnya saya berpikir akan menggunakan  PHP code Snippet yang ada di editor PHPRunner toh saya cuma buat nomor urut aja mudah seperti di php native , ternyata dugaan saya salah dan nomor urut tidak kunjung keluar. setelah saya browsing sana sini diforum PHPRunner dan mbah google akhirnya saya putuskan untuk membuat nomor urutnya pada perintah SQL.  berikut adalah perintah sql biasa tanpa mengenerate integer sequence :

SELECT
pembayaran.id_bayar,
pembayaran.tgl_bayar,
pembayaran.no_ktp,
pembayaran.nama,
pembayaran.id_kamar,
pembayaran.jml_bulan,
pembayaran.bank,
pembayaran.harga_kamar,
pembayaran.cash_tambahan,
pembayaran.disc_perbulan,
pembayaran.disc_pertahun,
pembayaran.disc_khusus,
pembayaran.denda,
pembayaran.total,
pembayaran.terbilang,
pembayaran.catatan,
pembayaran.username,
penyewa.email,
pembayaran.bulan_bayar
FROM pembayaran
INNER JOIN penyewa ON pembayaran.no_ktp = penyewa.no_ktp

untuk menambahkan nomor urutnya modifikasi query sqlnya menjadi seperti dibawah ini :

SELECT @row := @row+1 as row,
pembayaran.id_bayar,
pembayaran.tgl_bayar,
pembayaran.no_ktp,
pembayaran.nama,
pembayaran.id_kamar,
pembayaran.jml_bulan,
pembayaran.bank,
pembayaran.harga_kamar,
pembayaran.cash_tambahan,
pembayaran.disc_perbulan,
pembayaran.disc_pertahun,
pembayaran.disc_khusus,
pembayaran.denda,
pembayaran.total,
pembayaran.terbilang,
pembayaran.catatan,
pembayaran.username,
penyewa.email,
pembayaran.bulan_bayar
FROM pembayaran
INNER JOIN penyewa ON pembayaran.no_ktp = penyewa.no_ktp,(select @row := 0 )r

coba perhatikan dimana bedanya ?benar sekali, perhatikan perintah @row := @row+1 as row yang artinya variabel row selalu ditambahkan 1 , dan perhatikan pada bagian bawah perintah (select @row := 0 )r yang artinya kita memberikan nilai awal variabel row sama dengan 0. kenapa harus kita berikan nilai o ? karena jika kita tidak berikan nilai o maka otomatis nilainya akan bernilai null, sehingga jika null + 1 maka hasil seterusnya akan tetap null.

silahkan isi komentar anda disini
EmoticonEmoticon

Note: Only a member of this blog may post a comment.