Pertama di Indonesia: "Murottal Al Qur'an + Terjemahan" dalam bentuk CD MP3 Original (Coba dulu FREE)

Pasang banner (468x60) di sini


Dapatkan Script SMS Gateway PHP + MySQL

Seperti: software pengirim SMS massal, SMS survei, SMS polling, SMS quick count, SMS dakwah, Web2SMS dan masih banyak lagi... semuanya berbasis PHP & MySQL
[Info Lengkap...]


Perintah SQL untuk Mencari Siswa yang Belum Bayar SPP (studi kasus)


November 13th, 2008 | by rosihanari | Cetak Artikel Ini Cetak Artikel Ini

Dalam sebuah artikel yang saya publish tentang SQL SELECT untuk multi tabel, ada seorang teman yang berkomentar sekaligus menanyakan seperti ini:

Ass, saya lg bwt data SPP siswa, gmnx caranya
cari siswa yang blm bayar SPP, :(
printah d SQL-nya gmana??duh bingung bgt..:)

He.. he.. he… tidak usah bingung mas Fyan (si komentator)… Dengan SQL kita bisa dengan mudah mencari siswa-siswa yang belum membayar SPP. Kalau SQL tidak bisa, ya… bisa-bisa database dengan SQL based gak laku lagi :-) just kidding…

OK… akan saya berikan sedikit penjelasan, semoga hal ini bisa menghilangkan kebingungan mas Fyan, sekaligus mudah-mudahan bisa menggairahkan kembali untuk lebih kreatif dalam mengembangkan aplikasi SPP nya.

Untuk menjawab problem yang dihadapi mas Fyan, 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’

CREATE TABLE `siswa` (
  `nis` varchar(10),
  `namasiswa` varchar(30),
  `alamat` varchar(50),
  PRIMARY KEY  (`nis`)
);

dan berikut ini contoh data siswanya (tabel induk siswa)

INSERT INTO siswa VALUES 
('10001', 'ROSIHAN ARI YUANA', 'SOLO'), 
('10002', 'DWI AMALIA F', 'KUDUS'), 
('10003', 'FAZA FAUZAN', 'SOLO'), 
('10004', 'NADA HASANAH', 'SOLO'), 
('10005', 'MUH. AHSANI TAQWIM', 'SOLO');

Berikutnya kita buat pula tabel ‘BAYARSPP’

CREATE TABLE `bayarspp` (
  `nis` varchar(10),
  `tglbyr` date,
  `byrbln` int(11),
  `byrthn` varchar(4),
  PRIMARY KEY  (`nis`,`byrbln`,`byrthn`)
);

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

INSERT INTO bayarspp VALUES 
('10001', '2008-01-10', 1, '2008'), 
('10002', '2008-01-12', 1, '2008'), 
('10003', '2008-01-10', 1, '2008'), 
('10001', '2008-02-09', 2, '2008'), 
('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.

SELECT nis, namasiswa 
FROM siswa 
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

NIS    NAMA SISWA
1004   NADA HASANAH
1005   MUH. AHSANI TAQWIM

Wah… anak-anakku dijadikan contoh siswa yang belum bayar SPP nih :-) maaf ya nak… ini cuman contoh kok. Ayahmu akan berusaha bayar SPP tepat waktu :-)

OK demikian mas Fyan, mudah-mudahan ini yang dimaksud oleh Anda. Semoga ada manfaatnya.


Beberapa artikel terkait


Share this article on:

Kata kunci: query - SQL - subquery -


Ada 14 komentar dalam artikel ini.

  1. Baronk says:

    O ya mas, pengen buat “Artikel-artikel Terkait” seperti pada web ini, gimana caranya?

    Makasih sebelumnya

  2. [...] Artikel ini saya buat sekalian untuk menjawab pertanyaannya mas Baronk di blog ini [...]

  3. rosihanari says:

    udah saya posting jawabannya di sini mas

  4. zulkarya says:

    thx atas ilmunya boss

  5. ebenk789 says:

    Wah makasih ya mas buat infonya.. kebetulan lagi mau belajar PHP eh ada yang kumplit disini.. :)

  6. rais says:

    pak guru tolong dong aku mau buat untuk mengetahui siapa saja siswa yang belum kumpul tugas dengan metode bulan dan tahun yang sudah di ulas…

    dengan metode pencarian tapi menggunakan ajax yang langsung tampil di bawah form cari nya…

    contoh :

    si ani, searc : belum kumpul tugas 5 dan 7

    gimana ya

  7. [...] Anda merupakan pengunjung setia blog ini, maka Anda akan pernah mendapatkan artikel yang hampir sama beberapa waktu yang lalu. Namun perbedaan artikel berikut ini adalah bagaimana cara menampilkan data [...]

  8. gatotwibowo says:

    Pak tanya kalo untuk pembayaran langsung 2 bulan sampai 1 tahun gimana ya? mohon pencerahannya…

  9. rosihanari says:

    to gatotwibowo: untuk cara menyimpan record tetap harus disesuaikan dengan tabel di atas. Kalo misal 2 bulan bayar langsung maka ya tinggal masalah di programming saja supaya mengenerate SQL untuk menyisipkan 2 buah record. Untuk tanggalnya bisa Anda set tanggal 1 untuk setiap bulannya. Begitu pula jika dibayar 1 tahun langsung (berarti programnya harus bisa mengenerate 12 buah record langsung dengan tanggal bayarnya adalah tanggal 1 setiap bulannya).

  10. Asta Novita says:

    siang
    mau nanya
    gimana cara membuat sistem report usaha kost, yang isinya tentang bagi anak2 kost yang belum bayar dan sudah bayar dan langsung secara otomatis diberikan report dan bekerjasama dengan banking
    trims



Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
Untuk membuktikan bahwa komentar Anda bukan spam, tulis kata yang muncul dalam gambar di bawah ini. Bila Anda tidak bisa membaca kata dalam gambar, klik pada gambar tersebut untuk mendengarkan suara dari kata tersebut
Click to hear an audio file of the anti-spam word