Anda di halaman 1dari 2

Perintah SQL untuk Mencari Siswa yang Belum Bayar SPP

(studi kasus)

kita harus mulai memikirkannya ketika merancang tabel-tabel di database. Untuk keperluan
tersebut, kita harus buatkan tabel untuk menyimpan data semua siswa, katakanlah tabel ‘SISWA’
dan tabel untuk menyimpan data-data siswa yang sudah membayar SPP, katakanlah tabel
‘BAYARSPP’.

Untuk tabel ‘SISWA’ apa saja field-fieldnya? Tentu saja fieldnya terkait dengan data siswa,
misalnya NIS (Nomor Induk Siswa), Nama Siswa, Alamat Siswa, No Telp, dll. Selanjutnya
untuk tabel ‘BAYARSPP’ harus tersedia field untuk menyimpan NIS siswa yang sudah
membayar SPP. Selain itu, harus tersedia pula field untuk menyimpan tanggal pembayaran
(untuk keperluan tracking), field untuk menyimpan informasi bulan SPP yang dibayar, serta
tahun bulan SPP yang dibayar. Kita tidak bisa hanya mengandalkan field tanggal pembayaran
untuk mengetahui si siswa sudah membayar SPP bulan tertentu. Karena bisa jadi siswa
membayar SPP tanggal 1 Januari 2009, padahal dia membayar untuk SPP bulan desember 2008.

Dari penjelasan di atas, kita bisa mulai susun tabel-tabelnya:

Perintah SQL untuk membuat tabel ‘SISWA’

view sourceprint?
1.CREATE TABLE `siswa` (
2.  `nis` varchar(10),
3.  `namasiswa` varchar(30),
4.  `alamat` varchar(50),
5.  PRIMARY KEY  (`nis`)
6.);

dan berikut ini contoh data siswanya (tabel induk siswa)

view sourceprint?
1.INSERT INTO siswa VALUES
2.('10001', 'ROSIHAN ARI YUANA', 'SOLO'),
3.('10002', 'DWI AMALIA F', 'KUDUS'),
4.('10003', 'FAZA FAUZAN', 'SOLO'),
5.('10004', 'NADA HASANAH', 'SOLO'),
6.('10005', 'MUH. AHSANI TAQWIM', 'SOLO');

Berikutnya kita buat pula tabel ‘BAYARSPP’

view sourceprint?
1.CREATE TABLE `bayarspp` (
2.  `nis` varchar(10),
3.  `tglbyr` date,
4.  `byrbln` int(11),
5.  `byrthn` varchar(4),
6.  PRIMARY KEY  (`nis`,`byrbln`,`byrthn`)
7.);

Field ‘byrbln’ digunakan untuk menyimpan data terkait dengan bulan SPP yang mau dibayarkan.
Field ‘byrthn’ terkait dengan tahun SPP yang dibayarkan, sedangkan ‘tglbyr’ menyimpan
informasi tanggal berapa si siswa membayar.

Berikut ini contoh data pembayaran SPP siswa

view sourceprint?
1.INSERT INTO bayarspp VALUES
2.('10001', '2008-01-10', 1, '2008'),
3.('10002', '2008-01-12', 1, '2008'),
4.('10003', '2008-01-10', 1, '2008'),
5.('10001', '2008-02-09', 2, '2008'),
6.('10003', '2008-02-13', 2, '2008');

Untuk record pertama, kita bisa mengetahui bahwa siswa ber NIS ’10001′ telah membayar SPP
untuk bulan 1 (Januari) tahun 2008 pada tanggal 10/01/2008. Sedangkan untuk record yang lain,
cara membacanya sama.

Nah… kembali ke pertanyaan inti mas Fyan, bagaimana perintah SQL untuk mencari siswa yang
belum membayar SPP pada bulan tertentu? Nah… dengan struktur tabel di atas, kita bisa
membuat SQL nya dengan mudah. Konsepnya adalah dengan mencari terlebih dahulu NIS dari
siswa yang sudah membayar SPP pada bulan tertentu (dalam hal ini menggunakan tabel
‘BAYARSPP’), misalkan hasil query ini diberi nama X. Selanjutnya, kita cari NIS yang ada
dalam tabel ‘SISWA’ yang NIS nya tidak terdapat dalam hasil X tadi. Ketemu dah hasilnya…

Sebagai contoh, berikut ini adalah perintah SQL untuk menampilkan NIS dan NAMA SISWA
yang belum membayar SPP bulan Januari 2008.

view sourceprint?
1.SELECT nis, namasiswa
2.FROM siswa
3.WHERE nis NOT IN (SELECT nis FROM bayarspp WHERE byrbln = 1 AND byrthn =
'2008');

Dari query SQL di atas, akan tampak NIS dan NAMA SISWA yang belum membayar SPP bulan
Januari 2008 yaitu

view sourceprint?
1.NIS    NAMA SISWA
2.1004   NADA HASANAH
3.1005   MUH. AHSANI TAQWIM

Anda mungkin juga menyukai