Anda di halaman 1dari 4

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

2009

2010

2010

2011

Tabel master_bulan
id_bulan

nama_bulan

Januari

Februari

Maret

April

Mei

Juni

Juli

Agustus

September

10

Oktober

11

November

Tabel master_siswa
id_sis
no_ab nama_s alam jenis_kel telep nama_oran status_wajib id_detail_ id_tahun_
nis
wa
sen iswa
at
amin
on
g_tua
_bayar
kelas
ajaran
1

00 1
01

Alie

sama P
n

1598 Alien
74
Hasan

00 2
02

Budui

(NU L
LL)

3958 Adi
456

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

Januari

0001

111

Tunggakan

2009

Januari

0002

121

Tunggakan

2009

Februari

0001

112

Tunggakan

2009

Februari

0002

122

Tunggakan

2009

Maret

0001

113

Tunggakan

2009

Maret

0002

123

Tunggakan

2009

April

0001

114

Tunggakan

2009

April

0002

124

Tunggakan

2009

Mei

0001

115

Tunggakan

2009

Mei

0002

125

Tunggakan

2009

Juni

0001

116

Tunggakan

2009

Juni

0002

126

Tunggakan

2009

Juli

0001

117

Tunggakan

2009

Juli

0002

127

Tunggakan

2009

Agustus

0001

118

Tunggakan

2009

Agustus

0002

128

Tunggakan

2009

September

0001

119

Tunggakan

2009

September

0002

129

Tunggakan

2009

10

Oktober

0001

1110

Tunggakan

2009

10

Oktober

0002

1210

Tunggakan

2009

11

November

0001

1111

Tunggakan

2009

11

November

0002

1211

Tunggakan

2010

Januari

0001

211

Tunggakan

2010

Januari

0002

221

Tunggakan

2010

Februari

0001

212

Tunggakan

2010

Februari

0002

222

Tunggakan

2010

Maret

0001

213

Tunggakan

2010

Maret

0002

223

Tunggakan

2010

April

0001

214

Tunggakan

2010

April

0002

224

Tunggakan

2010

Mei

0001

215

Tunggakan

2010

Mei

0002

225

Tunggakan

2010

Juni

0001

216

Tunggakan

2010

Juni

0002

226

Tunggakan

2010

Juli

0001

217

Tunggakan

2010

Juli

0002

227

Tunggakan

2010

Agustus

0001

218

No

2010

Agustus

0002

228

No

2010

September

0001

219

No

2010

September

0002

229

No

2010

10

Oktober

0001

2110

No

2010

10

Oktober

0002

2210

No

2010

11

November

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