Minggu, 22 Mei 2011

SQL SERVER

Bagi Anda yang sedang membuat sistem informasi akademik dan merasa kesulitan dengan bagaimana cara menampilkan nilai Index Prestasi (IP) mahasiswa untuk setiap semesternya, mudah-mudahan artikel ini berguna.


Ide menulis artikel ini muncul sewaktu perjalanan menuju my campus Mohon maaf kepada pengunjung setia blog ini, selama beberapa hari yang cukup lama saya tidak mengupdate artikel blog karena kesibukan saya, baik di rumah maupun di kampus. Waduh… serasa urusan gak pernah selesai-selesai. Ya… itulah urusan duniawi Nah.. sekarang fokus ke urusan akhirat, yaitu dakwah melalui ilmu yang saya bagi (meski yang didakwahkan bukan ilmu agama), It doesn’t matter

OK… dalam artikel ini akan saya coba kupas bagaimana membuat query SQL untuk menampilkan Index Prestasi mahasiswa untuk setiap semester yang telah ditempuhnya. Query ini pasti terdapat dalam sebuah sistem informasi akademik untuk menginformasikan track record akademik seorang mahasiswa yang telah menempuh perkuliahan.


Misalkan kita memiliki tabel matakuliah (‘mk’) dan pengambilan matakuliah (‘ambilmk’) dalam database sebagai berikut
CREATE TABLE mk (
  kodeMK varchar(5),
  namaMK varchar(20),
  sks int(11),
  PRIMARY KEY(kodeMK)
)
CREATE TABLE ambilmk (
  nim varchar(5),
  kodeMK varchar(5),
  nilai float,
  smt varchar(10),
  tahun varchar(9),
  PRIMARY KEY (nim, kodeMK, smt, tahun),
)

disertai dengan record untuk masing-masing tabel sbb:
INSERT INTO `ambilmk` VALUES ('M002', 'MK01', '3', 'GANJIL', '2008/2009');
INSERT INTO `ambilmk` VALUES ('M002', 'MK02', '4', 'GANJIL', '2008/2009');
INSERT INTO `ambilmk` VALUES ('M002', 'MK03', '3', 'GENAP', '2008/2009');
INSERT INTO `ambilmk` VALUES ('M002', 'MK04', '4', 'GENAP', '2008/2009');
INSERT INTO `ambilmk` VALUES ('M002', 'MK05', '4', 'GANJIL', '2009/2010');
INSERT INTO `mk` VALUES ('MK01', 'DATABASE', '3');
INSERT INTO `mk` VALUES ('MK02', 'PEMROGRAMAN DASAR', '2');
INSERT INTO `mk` VALUES ('MK03', 'PEMROGRAMAN WEB', '4');
INSERT INTO `mk` VALUES ('MK04', 'OOP', '3');
INSERT INTO `mk` VALUES ('MK05', 'PEMROGRAMAN VISUAL', '3');

Keterangan:

Di dalam tabel ‘ambilmk’ terdapat field ’smt’ yang digunakan untuk memberi keterangan pada semester apa (genap/ganjil) si mahasiswa mengambil matakuliah tersebut. Sedangkan field ‘tahun’ menunjukkan tahun ajarannya.

OK… sekarang bagaimana dengan bentuk query SQL nya. Untuk mencari IP, tentu kita harus tahu dulu formulanya, yaitu

IP = sum(sks x nilai)/sum(sks)

atau hasil dari penjumlahan sks x nilai matakuliah yang telah diambil dibagi dengan jumlah sks matakuliah tersebut.

Nah… sekarang kita terapkan formula tersebut ke dalam query SQL. Dalam hal ini kita akan menampilkan hasil querynya dalam bentuk SMT, TAHUN, IP.

But… tunggu dulu. Field ‘nilai’ ada di tabel ‘ambilmk’ sedangkan field ’sks’ ada di tabel ‘mk’. So… gimana donk? …. Lho apanya yang gimana? kan kita bisa relasikan kedua tabel melalui field ‘kodemk’. So… no problem kan?
SELECT smt, tahun, sum(sks * nilai)/sum(sks) AS IP
FROM ambilmk, mk
WHERE ambilmk.kodemk = mk.kodemk AND nim = 'M002'
GROUP BY tahun, smt

Query SQL di atas akan mencoba menampilkan IP mahasiswa bernim ‘M002′ untuk setiap semester dan tahun ajarannya.

Mungkin Anda bertanya, mengapa dalam query SQL perlu diberikan GROUP BY tahun, smt? Ya… karena query ini tujuannya adalah menampilkan IP setiap tahun dan semesternya. Sehingga perhitungan nilai untuk menghasilkan IP juga harus perlu dikelompokkan berdasarkan tahun dan semesternya.

Tidak ada komentar:

Posting Komentar