TELAH DIBUKA !!!

Toko Ebook Tutorial "RosihanAri.Net"


Free Ebook Tutorial from Rosihan Ari's Blog

Tutorial Javascript | Tutorial PHP Dasar | Tutorial AJAX | Tutorial CSS | Tutorial FPDF | Tutorial Wordpress



Slot iklan tersedia, pasang iklan di atas

Ebook yang direkomendasikan untuk Anda
Kunjungi Toko Ebook RosihanAri.Net

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


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

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.


Baca Juga Artikel Terkait
Perintah SQL (SELECT) untuk Multi Tabel (Bag. 2)
Perintah SQL (SELECT) untuk Multi Tabel (Bag. 1)
Perintah SQL untuk Menampilkan Record Random
Script PHP untuk Mencari Selisih Waktu dan Tanggal
Mencari Selisih Waktu dan Tanggal dengan SQL



Slot iklan tersedia, pasang iklan di atas


Kata kunci: query - SQL - subquery -


Ada 20 komentar dalam artikel ini.



  1. Amil Razik says:

    Thanks vert much,,,, blognya keren sekale,,, hehe.. :)

  2. dindin says:

    pak,,,
    gimana cara merelasikan database di sql server ke bahasa pemrograman C++…
    klo cara cetak dari C++ yag sudah dibuat program gimana pak??
    maksih pak,,

  3. Iyan sopian says:

    saya baru nyoba php nyari2 pengetahuan sukurnya nympe sini
    makasih bwt ilmunya mas, semangat bwt update terus biar anak negri bisa majuin negrinya
    cayo!!!

  4. Supandi says:

    Ass.wr.wb..
    Pak ari makasi atas semua tutorialnya..
    sangat berguna bagi saya untuk dapat mengerti tentang php-mysql..
    Buat Pak ari Jaya Terus..

  5. gutasaputra says:

    mas rosihan, saya mau nanya dong. gimana rancangan database untuk kebutuhan barang dari suatu materi pelajaran.

    misalkan :
    materi CISCO

    kebutuhan : komputer (1buah), router (1buah), kabel LAN (2buah) dll.

    rancangan database awal saya :
    tabel barang
    kdBarang (pk)
    namaBarang
    jumlah

    tabelMateri
    idMateri (pk1)
    kdMateri (pk2)
    kdBarang (fk)

    klo nampilin data, tanpa jumlah kebutuhan barang, saya bisa mas. tapi untuk nampilin data dengan jumlah kebutuhannya saya masih buntu.

    bisa bantu mas? terimakasih sebelumnya

    • rosihanari says:

      @gutasaputra: bedanya idMateri dengan kdMateri apa ya? yang jelas untuk setiap materi kan bisa jadi ada beberapa barang yang terlibat. Jadi pertama kita buat tabel Materi dulu sebagai master. Kemudian, kita buat juga tabel Barang sebagai master. Setiap barang dikasih kode barang sendiri. Kemudian buat satu tabel lagi yang merelasikan Materi dengan barang yang dibutuhkan.

  6. amy sidra says:

    dalam kasus saya, saya ingin mencari murid dalam kelas tertentu berdasarkan nama dan nis. syntax yang saya tulis begini:

    $li_query=mysql_query(“select * from nilai where nama like ‘%$cari%’ or nis like ‘%$cari%’ and kelas=’$kelas’ order by nama”);

    itu malah menampilkan murid dalam semua kelas. setelah membaca artikel ini, saya merubah syntaxnya jadi begini:

    $li_query=mysql_query(“select * from nilai where nama like ‘%$cari%’ or nis like ‘%$cari%’ in (select * from nilai where kelas=’$kelas’) order by nama”);

    hasilnya malah error, apakah ada yang salah dari syntax diatas?

    • rosihanari says:

      @amy sidra: yang salah pada bagian yang sy bold ini mas

      $li_query=mysql_query(“select * from nilai where nama like ‘%$cari%’ or nis like ‘%$cari%’ in (select * from nilai where kelas=’$kelas’) order by nama”);

      harusnya sebelum IN itu ada nama field nya.

  7. [...] by Imran Syarif | Bila 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 [...]



 

Komentar/pertanyaan Anda!

Mohon maaf, komentar/pertanyaan yang menggunakan email palsu atau komentar bernada negatif, cemooh, umpatan, cacian atau sejenisnya secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil

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

Mohon maaf jika seandainya ada beberapa pertanyaan Anda yang tidak direspon atau ditanggapi mengingat banyaknya komentar yang masuk dan keterbatasan kemampuan/ilmu saya dalam menjawab pertanyaan satu persatu. Saya harap Anda bisa memahami dan memakluminya.

Semua komentar atau pertanyaan yg masuk tidak akan langsung tampil di halaman ini, karena akan dimoderasi dahulu.


*