Soal D

D. Tampilkan nama mahasiswa yang telah lulus lebih dari 100 SKS

Karena menggunakan asumsi yang telah disebutkan sebelumnya, maka matakuliah yang pernah diambil, sks nya hanya terhitung satu kali. Kita manfaatkan query yang telah kita dapat dari soal B tadi. Terlebih dahulu kita membuat view untuk mempermudah langkah selanjutnya.

CREATE VIEW biji AS (

SELECT peserta.nim, kuliah.kodemk, CONCAT( kuliah.thnakademik, kuliah.semester ) AS TIME, matakuliah.sks, 69 – ASCII( UPPER( nilai ) ) AS biji

FROM peserta, kuliah, matakuliah

WHERE peserta.kodekuliah = kuliah.kodekuliah

AND kuliah.kodemk = matakuliah.kodemk

ORDER BY `peserta`.`nim` , kuliah.kodemk, TIME)

Kita telah mendapat view ‘biji’ . Selanjutnya kita akan mencari matakuliah paling akhir berdasar waktu diambilnya,..

CREATE VIEW p1 AS (

SELECT nim, kodemk, MAX( TIME ) AS wkt

FROM `biji`

GROUP BY nim, kodemk)

Di

Kita ingat bahwa S0012 mengambil matakuliah M0011 sebanyak dua kali, nah karena query diatas, kita dapat mengambil matakuliah yang paling akhir. Nim dan kodemk di atas sebenarnya tidak masalah apabila tidak ditampilkan, tapi sengaja ditampilkan untuk mempermudah gambaran saja. Selanjutnya dari sini kita akan merelasikannya dengan view ‘biji’ untuk mengambil nilainya.

SELECT BIJI.NIM, SUM( BIJI.SKS )

FROM BIJI, (

SELECT nim, kodemk, MAX( TIME ) AS wkt

FROM `biji`

GROUP BY nim, kodemk

) AS P1

WHERE BIJI.BIJI >0

AND BIJI.NIM = P1.NIM

AND BIJI.KODEMK = P1.KODEMK

AND BIJI.TIME = P1.WKT

GROUP BY BIJI.NIM

Nah, query di atas akan menampilkan nim dan jumlah sks yang diperoleh dan tentu saja sks yang nilainya minimal D. Selanjutnya kita akan menampilkan nama dari masing-masing nim tersebut.

SELECT mahasiswa.nama, p2.jumlahsks

FROM mahasiswa, (

SELECT BIJI.NIM, SUM( BIJI.SKS ) AS jumlahsks

FROM BIJI, (

SELECT nim, kodemk, MAX( TIME ) AS wkt

FROM `biji`

GROUP BY nim, kodemk

) AS P1

WHERE BIJI.BIJI >0

AND BIJI.NIM = P1.NIM

AND BIJI.KODEMK = P1.KODEMK

AND BIJI.TIME = P1.WKT

GROUP BY BIJI.NIM

) AS p2

WHERE mahasiswa.nim = p2.nim

AND p2.jumlahsks >100

D

Dalam hal ini, output kosong karena dalam database contoh tak ada mahasiswa yang sudah menyelesaikan matakuliah lebih dari 100 sks.

Leave a Reply