• Tidak ada hasil yang ditemukan

PEMBUATAN QUERY PADA SOAL B (PEMBUATAN DATA UNTUK PERHITUNGAN IPK)

N/A
N/A
Protected

Academic year: 2018

Membagikan "PEMBUATAN QUERY PADA SOAL B (PEMBUATAN DATA UNTUK PERHITUNGAN IPK)"

Copied!
10
0
0

Teks penuh

(1)

QUERI DATABASE SISTEM AKADEMIK PERGURUAN TINGGI

Assalamualaikum teman-teman,,

Pada kesempatan kali ini saya akan memberikan sedikit contoh query yang digunakan dalam pengolahan database. Dalam queri ini terdapat beberapa fungsi MySQL yang menggunakan fungsi agregasi, fungsi create view dan fungsi penggunaan 2 select dalam 1 queri.

Tetapi sebelum kita melakukan queri kita harus mempunyai suatu database dan sebuah permasalahan dalam sebuah database tersebut, jadi silakan ambil data dari link dibawah ini yang merupakan sebuah contoh permasalahannnya di sertai dengan database bernama evaluasi yang merupakan contoh sebuah database akademik di perguruan tinggi,,

Ya sebelum kita melakukan queri kita harus memahami data-data dari database tersebut baik tabel dan kolomnya,, Dan apabila ada sebuah data base yang mempunya isi seperti ini (sama dengan persoalan pada file di download linknya):

 Matakuliah(kodemk,namamk,sks)

 Dosen(nip,nama)

 Mahasiswa(nim,nama,dosenpembimbing)

 Kuliah(kodekuliah,kodemk,nip,thnakademik,semester)

 Peserta(nim,kodekuliah,nilai)

(Untuk lebih lengkapnya silakan dibaca dalam link)

Asumsi

1. matakuliah hanya ditawarkan sekali dalam setahun, yaitu pada semester 1 (ganjil) saja atau semester 2 (genap) saja dan tidak kedua-duanya

2. bila pernah mengulang matakuliah, nilai yang diikutkan untuk perhitungan IP adalah nilai terakhir

3. Matakuliah dikatakan lulus bila nilai yang diperoleh minimal 'd'

(2)

many, karena dalam tabel matakuliah, kolom kodemk merupakan sebuah unique number, yang tidak akan mempunya data yang sama dan sedangkan pada kolom kodemk yang ada pada tabel kuliah, data kodemk bisa digunakan lebih dari satu. Hal pembacaan data seperti ini sangat diperlukan sebelum kita melakukan queri suatu database. Untuk memperudah analisis lihatlah bagan di bawah ini:

(terdapat dalam file pdf)

Dari gambar di atas tersebut dapat kita simpulkan bahwa setiap tabel saling berhubungan, sehingga kalau kita ingin menggunakan 2 buah tabel dalam suatu query kita harus menyamakan data yang merupakan penghubung tabel 1 ke tabel yang lain, misal pada tabel mahasiswa dengan tabel peserta yang menghubungkan kedua tabel tersebut ialah kolom nim, sehingga pada penquerian di butuhkan sebuah statment yang menyamakan kedua data nim tersebut. Dan apabila kita ingin menggabung lebih dari 2 tabel sekaligus, kita harus menyamakan data- data yang sama, misal kita ingin menggabungkan tabel peserta, kuliah dan matakuliah, yang harus di samakan agar ketiga tabel tersebut saling berhubungan ialah, data kodemk yang ada pada mata kuliah dan kuliah, data kodekuliah yang ada pada peserta dan kuliah.

Setelah memahami struktur database kita bisa menuju persoalan yang ada,

A. tampilkan banyaknya SKS yang telah diselesaikan oleh masing-masing mahasiswa i. bila matakuliah yang diulang semua masuk dalam perhitungan

(3)

C. Tampilkan dosen yang pernah mengampu kelas matakuliah yang pesertanya tidak lebih dari 15 mahasiswa. D. Tampilkan nama mahasiswa yang telah lulus lebih dari 100 SKS

E. Bila kode matakuliah untuk Tugas Akhir adalah ‘M0012’, tampilkan banyaknya siswa yang telah lulus tugas akhir

Sebelum kita melakukan penquerian kita pertama juga harus menganalis soal, soal mana yang membutuhkan sebuah tabel bantu (dalam hal ini pembuatan sebuah tabel dibutuhkan fungsi ‘CREATE VIEW (NAME) AS (QUERY)’. Jadi kita tidak harus langung menquery menggunakan di phpmyadmin tetapi lebih baik kita buat sebuah bagan di selember kertas terlebih dahulu. Kemudian masuk dalam persoalan, soal B dapat dikatakan yang paling penting dan apabila hasil penquerian soal ini dibuat menjadi sebuah tabel bantu maka tabel ini dapat digunakan untuk menyokong penquerian pada soal nomer A, D,E,. Jadi pembuatan yang paling mendasar adalah membuat query pada soal B dan hasil penquerian tersebut kita gunakan sebagai tabel baru.

PEMBUATAN QUERY PADA SOAL B (PEMBUATAN DATA UNTUK PERHITUNGAN IPK)

Langkah awal dalam penquerian suata permasalahan adalah menentukan apa yang kita ingin tampilkan dalam tabel tersebut. Dalam permasalahan ini yang akan kita tampilkan adalah data yang dapat digunakan untuk perhitungan IPK, sehingga data-data yang dibutuhkan ialah data nim, nilai(nilai setiap mahasiswa), kodemk, sks, thnakademik, semester kemudian data tersebut Cuma membutuhkan 3 tabel saja yaitu: matakuliah, kuliah dan peserta. Kemudian yang terakhir untuk menggabungkan ketiga tabel tersebut kita harus menyamakan colom-colom yang sama sebagai penghubung yaitu colom kodekuliah dan kodemk. Mengapa tidak dicantumkan nama mahasiswa dalam penquerian tersebut?? Itu karena nim dapat dikatakan sudah mencukupi untuk membedakan mahasiswa yang satu dengan yang lain, dan apabila di ada masalah yang meminta dicantumkan nama mahasiswa, maka kita dapat memanggil data nama mahasiswa di tabel mahasiswa dengan menyamakan nim yang sudah ada.

Hasil penquerian permasalahan berdasarkan analisis tersebut:

SELECT nim, nilai, kuliah.kodemk, sks, thnakademik, semester FROM peserta, matakuliah, kuliah

(4)

ORDER BY nim

Dalam SELECT terdapat data yang mengikut sertakan nama tabelnya dan ada yang tidak, seperti kuliah.kodemk, Mengapa demikian?? Hal ini disebabkan pada colom kodemk terdapat pada dua tabel, yaitu pada tabel kuliah dan matakuliah, sehingga nama tabel harus dicantumkan agar kodemk tidak menjadi data yang ambigu. Kemudian FROM digunakan untuk memilih tabel mana yang akan digunakan, hal ini sesuai dengan analisis. Dan pada analisis untuk menggabungkan tabel-tabel kita harus menyamakan kolom-kolom yang sama,dan disini kita menggunkan perintah WHERE . perintah ORDER BY merupakan perintah yang digunakan untuk mengurutkan data pada tabel hasil penquerian, disini tabel saya urutkan berdasarkan nim.

Akan tetapi apabila kita lihat hasil dari tabel tersebut, ansumsi nomer 2 yaitu apabila mengulang maka nilai yang digunakan adalah nilai terakhir belumlah masuk, pada tabel ini semua kuliah yang dillakukan mahasiwa di cantumkan semua. Sehingga tabel hasil queri ini masihlah kotor(belum selesai) jadi kita harus memberi batasan batasan tertentu. Namun sebelumnya mungkin kita membutuhkan data-data dari hasil querian ini, maka lebih baik kita membuat tabel dari queri ini

Query untuk membuat tabel dari queri diatas:

CREATE VIEW dataipkotor AS SELECT nim, nilai, kuliah.kodemk, sks, thnakademik, semester FROM peserta, matakuliah, kuliah

WHERE peserta.kodekuliah = kuliah.kodekuliah AND matakuliah.kodemk = kuliah.kodemk ORDER BY nim menggabungkan

Perintah CREATE VIEW dataipkotor AS merupakan sebuah perintah untuk membuat sebuah tabel bernama dataipkotor. Tabel hasil querian tersebut kita namakan dataipkotor karena memang data tersebut belum sesuai dengan yang kita inginkan

(5)

namun sayangnya hal tersebut akan menghasilkan data pada kolom niai yang random untuk setiap nim, misal tadi peserta dengan nim “S2001” mempunyai nilai A, maka apabila menggunakan queri diatas bisa saja nilai berubah menjadi E(Gawat nich.. LoL), jadi untuk mengakalinya kita buat sebuah tabel bantu baru misal aja dinamai tbltahun. Di tabel ini kita gunakan fungsi MAX pada data thnkakademik sehinngga nanti relasinya kita kedua tabel dataipkotor dengan tbltahun dengan menyamakan nim, kodemk, dan thnakademik kedua tabel tersebut saling bersinambungan.

Na... ini queri pembuatan tabel pembantu tbltahun

CREATE VIEW tbltahun as SELECT nim, kodemk,MAX(thnakademik)as thnakademik FROM peserta, kuliah

WHERE peserta,kodekuliah=kuliah.kodekuliah GROUP BY nim, kodemk

ORDER BY nim

Disini tahun akademik di berikan fungsi maksimal dengan pengrupan kodemk, sehingga akan menghasilkan kodemk yang paling terakhir di ambil, setelah membuat tabel bantu ini kita dapat menentukan data ip yang sesuai dengan ansumsi di atas

Yup ini merupakan queri penggabungan tbltahun tabel dataipkotor

SELECT peserta.nim, nilai, kuliah.kodemk, sks, kuliah.thnakademik, kuliah.semester FROM peserta, matakuliah, kuliah, tbltahun

WHERE peserta.kodekuliah = kuliah.kodekuliah AND matakuliah.kodemk = kuliah.kodemk

AND kuliah.thnakademik = tbltahun.thnakademik AND peserta.nim = tbltahun.nim

AND kuliah.kodemk = tbltahun.kodemk ORDER BY nim

(6)

Kemudian karena kita membutuhkan data dari tabel ini kita lebih baik membuat hasil queri ini sebagai tabel dataip

Queri pembuatan tabel dataip

CREATE VIEW dataip AS SELECT peserta.nim, nilai, kuliah.kodemk, sks, kuliah.thnakademik, kuliah.semester

FROM peserta, matakuliah, kuliah, tbltahun WHERE peserta.kodekuliah = kuliah.kodekuliah AND matakuliah.kodemk = kuliah.kodemk

AND kuliah.thnakademik = tbltahun.thnakademik AND peserta.nim = tbltahun.nim

AND kuliah.kodemk = tbltahun.kodemk ORDER BY nim

Yap permasalahan b sudah selesai...

PEMBUATAN QUERY PADA SOAL A (MENENTUKAN BANYAKNYA SKS YANG DIAMBIL

MAHASISWA)

I)

Apabila Asumsi Kedua Diabaikan

(7)

SELECT nim, SUM(sks) AS banyaksks FROM dataipkotor

GROUP BY nim ORDER BY nim

Disini colom jumlah banyaknya sks yang di ambil mahasiswa kita namakan dengan banyaksks,....

II)

Apabila Asumsi Kedua Dipakai

Pada kasus yang ini tidaklah terlalu berbeda dengan yang pertama, perbedaannya cuma pada asumsi kedua dipakai. Jadi kali ini kita dapat menggunakan tabel yang telah kita buat pertama yaitu tabel dataip, di dalam tabel ini data kodemk sudah diambil yang paling akhir dari tahun akademik, jadi pada queri ini kita hanya mengganti tabelnya saja, sehingga querinya adalah sebagai berikut:

SELECT nim, SUM(sks) AS banyaksks FROM dataip

GROUP BY nim ORDER BY nim

Disini peserta yang mengulang matakuliah, nilainya hanya akan diambil yang terakhir

PEMBUATAN QUERY PADA SOAL C (MENAMPILKAN DOSEN YANG PERNAH

MENGAMPU KELAS YANG MAHASISWANYA TIDAK LEBIH DARI 15 PESERTA)

(8)

mendapatkan dosen yang mmengajar kurang dari 15 peserta dalam satu kelas?? Caranya adalah kita harus mencari relasi antara tabel peserta dengan tabel dosen. Dan ternyata kita membutuhkan tabel kuliah untuk menggabungkan kedua tabel tersebut dan relasinya adalah nip pada tabel dosen dengan kuliah dan kita lanjutkan dengan kodekuliah pada tabel kuliah dengan kodekuliah pada tabel peserta. Jadi hubungan dengan tabel dosen dengan peserta adalah nip dan kodekuliah dan penghubung antara keduanya adalah tabel kuliah. Sehingga untuk mencari banyaknya peserta dalam satu kelas matakuliah adalah dengan menggunakan fungsi COUNT pada nim peserta dengan digrup oleh kodekuliah. Digunakan nim karena merupakan pembeda pada setiap mahasiswa, sedangkan digunakan grup kodekuliah karena ini merupakan pembeda bagi setiap dosen, walaupun 2 kode kuliah dapat digunakan untuk 1 dosen . Oleh karena itu kita harus membagi menjadi satu subqueri lagi yaitu queri untuk menghitung banyaknya peserta yang ikut dalam setiap kodekuliah. Dan setelah itu kita gabungkan subqueri tersebut dengan tabel dosen tapi untuk menggabungkan keduanya kita membutuhkan tabel kuliah sebagai perantara. Dan kita pilih jumlah peserta dari subqueri itu yang jumlahnya kurang dari 15

Berdasarkan analisis query yang digunakan menjadi:

SELECT DISTINCT dosen.nip, nama FROM dosen, kuliah, (

SELECT COUNT( nim ) AS banyakp, kodekuliah FROM peserta

GROUP BY kodekuliah ) AS Y

WHERE kuliah.kodekuliah = Y.kodekuliah AND kuliah.nip = dosen.nip

AND Y.banyakp <15

Disini subqueri kita misalkan Y, dan banyak peserta pada setiap kuliah dimisalkan banyakp, dan subqueri dapat dikatakann merupakan sebuah tabel Y. Dan digunakan nama tabel didepan nip karena nip berada di dua tabel yaitu tabel dosen dan kuliah.

PEMBUATAN QUERY PADA SOAL D (MENAMPILKAN NAMA MAHASISWA YANG TELAH

(9)

Pada kasus kali ini kita hanya akan menampilkan data nama mahasiswa yang telah lulus lebih dari 100 sks jadi disini kita melakukan analisis yang hampir sama dengan diatas sehingga kita membutuhkan satu subqueri untuk membantu kita. Pada subqueri ini kita akan melakukan penjumlahan sks untuk setiap nim yang berbeda pada tebel dataipkotor, digunakan tabel dataipkotor karena pada permasalahan ini kita disuruh menampilkan mahasiswa yang telah lulus lebih dari 100 sks dan disini asumsi kedua tidaklah masuk juga pada subqueri ini kita pilih yang nilai bukanlah E karena syarat kelulusan sks adalah minimala nilai bernilai D. Kemudian pada queri utamanya kita akan memilih yang nimnya mempunyai jumlah sks yang lebih dari 100, kemudian kita gabungkan dengan tabel mahasiswa untuk mendapatkan nama dari nim yang telah lulus lebih dari 100 sks,

Sehingga querinya menjadi

SELECT nama, mahasiswa.nim FROM mahasiswa, (

SELECT nim, SUM( sks ) AS banyaksks FROM dataipkotor

WHERE UPPER( nilai ) != "E" GROUP BY nim

)Y

WHERE mahasiswa.nim = Y.nim AND banyaksks <100

Pada subqueri ini terdapat fungsi UPPER ini berfungsi untuk membuat huruf menjadi UPPERCASE, karena kalu tidak dipakai nilai e dan E tidaklah sama.

PEMBUATAN QUERY PADA SOAL E (MENAMPILKAN BANYAK MAHASISWA YANG

TELAH LULUS LULUS TUGAS AKHIR(M0012))

(10)

Sehingga querinya menjadi

SELECT COUNT(nim) AS bnyklulusTA FROM dataipkotor WHERE kodemk="M0012" AND UPPER(nilai) !="E"

Disini digunakan tabel dari dataip yang telah kita buat pertama kali kolom yang telah di beri fungsi count diberikan nama sebagai bnyklulusTA

QUERI UNTUK SOAL F (MENAMPILKAN NILAI IPK)

Pada permasalahan kali ini kita disuruh untuk menampilkan nilai ipk dari setiap mahasiswa dan disini kita juga akan menampilkan namanya. Yang susah itu adalah bagaimana kita mendapat nili ipk untuk setiap mahasiswa, lau gimana caranya..? caranya adalah kita harus mengkonversi nilai yang tadinya huruf menjadi angka, untuk angka A=4, B=3, C=2, D=1, dan E=0.adi disini kita butuh 2 fungsi tambahan yatu upper dan ascii, upper berguna untuk mengubah data menjadi uppercase semua dan ascii merubah huruf menjadi bil, untuk huruf A akan berubah menjadi 65 sedangkan untuk E adalah 69. jadi setelah kita mengkonversi dari huruf menjadi bilangan maka kita harus mengkalikan nilai tersebut dengan sks pada setiap matakuliah dan yang terakhir kita jumlahkan. Dengan itu maka kita akan mendapatkan jumlah pint untuk semua mahasiswa. Setelah mendapatkan point maka point tersebut harus dibagi dengan banyaknya sks yang kita ambil, ssehingga querinya menjadi:

SELECT mahasiswa.nim, nama, IPK

FROM mahasiswa,(SELECT nim, (SUM((69-(ASCII(UPPER(nilai))))*sks)/SUM(sks)) AS IPK FROM dataip

GROUP BY nim) as Y

WHERE Y.nim=mahasiswa.nim

Disni kita akan menggabungkan 2 tabel yaitu mahasiswa dengan tabel hasil queeri kita, jadi kita harus menyakan nnimnya agar kedua tabel tersebut menyatu.

Yup.. sekian dulu untuk pelajaran querinya

Gambar

tabel peserta, kuliah dan matakuliah, yang harus di samakan agar ketiga tabel tersebut saling

Referensi

Dokumen terkait

bahwa dengan telah dikeluarkannya Peraturan Pemerintah Nomor 21 Tahun 2007 tentang Perubahan Ketiga Atas Peraturan Pemerintah Nomor 24 Tahun 2004 tentang Kedudukan Protokoler

kesesuaian tindakan aktor yang terlibat. • Yang menunjukkan bahwa lebih berpengaruh dibandingkan variabel lainnya, yang mana menunjukkan besarnya kekuatan masyarakat dalam

Dari hasil angket dan wawancara (Rabu, 20 Januari 2010) penulis kepada responden yang mewakili responden lain pada saat siswa mengembalikan kuesioner yang telah diisi, tanggapan

- Pengalaman kerja diutamakan dibidangnya - Familiar dengan bidang pemasaran property - Memiliki kemampuan negosiasi/presentasi - Networking luas, berpenampilan menarik,

Adapun konsep diri dari aspek fisik yang dirasakan oleh responden 2 sesuai dengan hasil wawancara adalah :Bahwa Septi merasa kalau ia berjilbab mode, ia akan terlihat

Rinitis vasomotor merupakan suatu gangguan fisiologik neurovaskular mukosa hidung dengan gejala hidung tersumbat, rinore yang hebat dan kadang – kadang dijumpai adanya bersin

Untuk mengetahui exercise Half Semont Manuver lebih baik dari exercise Brandt-doroff Manuver dalam menggurangi keluhan vertigo pada gangguan fungsi Vestibular Posterior

Orang Kelantan, walau pun yang berkelulusan PhD dari universiti di Eropah (dengan biasiswa Kerajaan Persekutuan) dan menjawat jawatan tinggi di Kementerian atau di Institusi