Minggu, 08 September 2013

Perintah SQL (SELECT) untuk Multi Tabel (Bag. 2)

OK… artikel ini merupakan kelanjutan dari artikel sebelumnya. Kalau Anda belum membaca artikel sebelumnya, coba bacalah terlebih dahulu karena artikel ini terkait erat.
Dalam artikel ini akan kita bahas pertanyaan no. 3 dan 4.

Adapun pertanyaan no. 3  adalah bagaimana perintah SQL untuk menampilkan IPK dari mahasiswa berNIM ’003′?
Untuk membuat SQL dari query di atas, lagi-lagi langkah pertama adalah menentukan di tabel mana kita akan bekerja. Apabila Anda perhatikan, maka tabel yang dipilih adalah mk dan ambilMK. Mengapa demikian? Tabel mk digunakan untuk mengambil informasi terkait dengan sks matakuliah yang diambil mahasiswa dan tabel ambilMK berisi informasi daftar matakuliah yang diambil mahasiswa.
Nah… , setelah Anda menentukan tabel yang digunakan, selanjutnya Anda harus tahu formula untuk menghitung IPK. Apa rumusnya? yaitu jumlah dari perkalian sks dan nilai yang diambil mahasiswa dibagi dengan jumlah sks yang diambil mahasiswa.
OK begitu Anda tahu rumusnya, langsung dapat diimplementasikan ke SQL, yaitu

1.SELECT sum(ambilMK.nilai * mk.sks)/sum(mk.sks) as IPK
2.FROM ambilMK, mk
3.WHERE ambilMK.kodeMK = mk.kodeMK
4.AND ambilMK.nim = '003';
Dari SQL di atas, Anda akan memperoleh hasil IPK mhs bernim ’003′ adalah 3.5
Hikmah dari contoh kasus pencarian IPK ini adalah, apabila Anda membuat sistem untuk pencatatan nilai siswa seperti sistem informasi akademik dan sejenisnya, sebaiknya data IP atau IPK jangan disimpan dalam tabel, melainkan melalui proses query. Apabila data IP atau IPK tersimpan ke dalam tabel, maka kemungkinan terjadi ketidakkonsistenan data semakin besar. Bisa jadi IP atau IPK yang tersimpan di tabel berbeda dengan kenyataan berdasarkan nilai-nilai matakuliah yang diperoleh siswa. Lagipula jika data-data IP dan IPK disimpan dalam tabel, maka hanya akan menambah penuh database Anda :-)
OK… selanjutnya akan kita bahas untuk pertanyaan no. 4, yaitu bagaimana statement SQL untuk menampilkan nim, nama dan nilai IPK semua mahasiswa.
Nah… kalau pertanyaan ini, kita harus menggunakan semua tabel, yaitu mhs, mk dan ambilMK.Tabel mhs diperlukan karena untuk menampilkan nama mahasiswa, bisa juga untuk nim. Tapi nim juga dapat ditampilkan melalui tabel ambilMK.
Bagaimana statement SQL nya?

1.SELECT mhs.nim, mhs.namaMhs, 
2.sum(ambilMK.nilai * mk.sks)/sum(mk.sks) as IPK
3.FROM mhs, ambilMK, mk
4.WHERE mhs.nim = ambilMK.nim AND ambilMK.kodeMK = mk.kodeMK
5.GROUP BY mhs.nim
Mengapa harus ada perintah GROUP BY mhs.nim? Hal ini karena perhitungan IPK dapat dilakukan setelah data dikelompokkan berdasarkan nim, mengingat seorang mahasiswa dapat mengambil matakuliah lebih lebih dari satu.

Tidak ada komentar :

Posting Komentar