Query[1] Tunggakan Pembayaran Sistem Informasi Pembayaran SPP


Assalaamualaikum

Query mencari tunggakan pembayaran

Pertanyaan pertama saat membuat sistem informasi pembayaran ialah bagaimana mencari tunggakan dari siswa hanya dari data transaksi yang ada, sedangkan tunggakan ialah data yang belum masuk pada data pembayaran (siswa yang menunggak tidak melakukan transaksi pembayaran) terhitung sejak bulan ini(bulan kemarin) ke belakang.

Misalkan bulan sekarang Juli 2010, maka tunggakan ialah bulan sebelumnya yaitu Juni 2010, Mei 2010, dst… ke belakang.

Sehingga cara yang digunakan ialah membentuk data yang harus dibayar (tunggakan) dengan melakukan relasi tahun ajaran, bulan, serta siswa dengan hasil cartesian product dari ketiga tabel tersebut.

Pada sistem informasi pembayaran SPP terdapat beberapa tabel, yaitu

Stuktur dan data tabel-tabel dibawah ini dapat didownload disini.

  1. Tabel master_tahun_ajaran yang berisi data tahun ajaran
  2. Tabel master_bulan yang berisi daftar bulan pembayaran. Pada kasus disini dari bulan Januari s/d November
  3. Tabel master_siswa yang berisi data siswa beserta kelasnya
  4. Tabel transaksi (tabel_transaksi)

dengan field : id_tahun_ajaran, id_detail_kelas, id_siswa, id_bulan,tanggal

Sebagai penanda pembayaran dilakukan pada tahun ajaran (id_tahun_ajaran)
tertentu oleh siswa (id_siswa) melakukan pembayaran SPP bulan(id_bulan)
pada tanggal tertentu

Tabel master_tahun_ajaran

id_tahun_ajaran tahun_ajaran_awal tahun_ajaran_akhir status
1 2009 2010 1
2 2010 2011 0

Tabel master_bulan

id_bulan nama_bulan
1 Januari
2 Februari
3 Maret
4 April
5 Mei
6 Juni
7 Juli
8 Agustus
9 September
10 Oktober
11 November

Tabel master_siswa

id_siswa nis no_absen nama_siswa alamat jenis_kelamin telepon nama_orang_tua status_wajib_bayar id_detail_kelas id_tahun_ajaran
1 0001 1 Alie saman P 159874 Alien Hasan 1 1 1
2 0002 2 Budui (NULL) L 3958456 Adi 1 1 1

Query :

SELECT
a.tahun_ajaran_awal as tahun,
b.id_bulan, b.nama_bulan,
c.id_siswa, c.nis,
CONCAT(a.id_tahun_ajaran,c.id_siswa,b.id_bulan) as KunciA,
if(a.tahun_ajaran_awal<year(curdate()),”Tunggakan”,

if(b.id_bulan<=month(curdate()),”Tunggakan”,”No”)) as Ket
FROM
kp_spp2.master_tahun_ajaran a CROSS JOIN
kp_spp2.master_bulan b CROSS JOIN
kp_spp2.master_siswa c
ORDER BY
a.tahun_ajaran_awal, b.id_bulan,  c.nis

Hasil query :

tahun id_bulan nama_bulan id_siswa nis KunciA Ket
2009 1 Januari 1 0001 111 Tunggakan
2009 1 Januari 2 0002 121 Tunggakan
2009 2 Februari 1 0001 112 Tunggakan
2009 2 Februari 2 0002 122 Tunggakan
2009 3 Maret 1 0001 113 Tunggakan
2009 3 Maret 2 0002 123 Tunggakan
2009 4 April 1 0001 114 Tunggakan
2009 4 April 2 0002 124 Tunggakan
2009 5 Mei 1 0001 115 Tunggakan
2009 5 Mei 2 0002 125 Tunggakan
2009 6 Juni 1 0001 116 Tunggakan
2009 6 Juni 2 0002 126 Tunggakan
2009 7 Juli 1 0001 117 Tunggakan
2009 7 Juli 2 0002 127 Tunggakan
2009 8 Agustus 1 0001 118 Tunggakan
2009 8 Agustus 2 0002 128 Tunggakan
2009 9 September 1 0001 119 Tunggakan
2009 9 September 2 0002 129 Tunggakan
2009 10 Oktober 1 0001 1110 Tunggakan
2009 10 Oktober 2 0002 1210 Tunggakan
2009 11 November 1 0001 1111 Tunggakan
2009 11 November 2 0002 1211 Tunggakan
2010 1 Januari 1 0001 211 Tunggakan
2010 1 Januari 2 0002 221 Tunggakan
2010 2 Februari 1 0001 212 Tunggakan
2010 2 Februari 2 0002 222 Tunggakan
2010 3 Maret 1 0001 213 Tunggakan
2010 3 Maret 2 0002 223 Tunggakan
2010 4 April 1 0001 214 Tunggakan
2010 4 April 2 0002 224 Tunggakan
2010 5 Mei 1 0001 215 Tunggakan
2010 5 Mei 2 0002 225 Tunggakan
2010 6 Juni 1 0001 216 Tunggakan
2010 6 Juni 2 0002 226 Tunggakan
2010 7 Juli 1 0001 217 Tunggakan
2010 7 Juli 2 0002 227 Tunggakan
2010 8 Agustus 1 0001 218 No
2010 8 Agustus 2 0002 228 No
2010 9 September 1 0001 219 No
2010 9 September 2 0002 229 No
2010 10 Oktober 1 0001 2110 No
2010 10 Oktober 2 0002 2210 No
2010 11 November 1 0001 2111 No

Ket :
Tunggakan ~ untuk bulan tunggakan
No ~ tidak menunggak karena belum masuk bulan tersebut

Mohon koreksi bila ada kesalahan, manusia tak luput dri salah khilaf..

NB : Query tersebut diatas belum dikurangi dengan data transaksi pembayaran, so.. tunggu tutorial selanjutnya…🙂

Salam DBA by blackphp

Assalaamualaikum

About blackphp

All about programming php, ajax, jquery, mysql, etc, tips n trick. Now, i'm concern in php programming with codeigniter framework n also training my design skill with photoshop or corel... wish me luck! ('o')

Posted on July 15, 2010, in mYsQL. Bookmark the permalink. 2 Comments.

  1. Makasih Mass or Mbaa,,,
    artikelnya membantu saya 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: