Beberapa hari yang lalu berkutat dengan Mysql, bukan apa-apa sih buat program atau yang lainnya tetapi cuma untuk menggambil data dari database yang sudah ada, aku pikir datanya sedikit dan tabelnya mudah untuk derelasikan ternyata datanya lumayan banyak sekitar 20.000 record huuuh kalu dimasukan secara manual bisa kesleo nih jari hehehe… J . sebenarnya juga dah ada program untuk inputnya tetapi dengan recor sebanyak itu kapan rampungnya waktunya juga dah mepet, disamping itu format databasenya juga berbeda tambah ribet lagi nih. Pikir punya pikir dieksporin aja database tadi dari mysql ke format database yang diminta yaitu DBF, disini aku memakai Navicat for MySQL sebagai tool Mysql client toolnya sekaligus berguna untuk ekspor databasenya dari format sql ke dbf.
Berikut Mysql Subquerynya semoga bisa dijadikan pelajaran
select ("20081")as Thsmstrakm,("055006")as Kdptitrakm,
("E")as Kdjentrakm,(kdpst)as Kdpsttrakm,("")as smawltrakm,
(no_mhs)as Nimhstrakm,round((sum(mata_kuliah.sks*khs.nilai ))/
(sum(mata_kuliah.sks)),2)as Nlipstrakm,
sum(mata_kuliah.sks)as sksemtrakm,
(SELECT round((sum(mata_kuliah.sks*khs.nilai ))/
(sum(mata_kuliah.sks)),2)as total_nilai FROM `identitas_mhs`
INNER JOIN `krs` ON (`identitas_mhs`.`kode_mhs` = `krs`.`kode_mhs`)
INNER JOIN `khs` ON (`krs`.`kode_krs` = `khs`.`kode_krs`)
INNER JOIN `mata_kuliah` ON (`krs`.`kode_automatkul` = `mata_kuliah`.`kode_automatkul`)
where identitas_mhs.no_mhs=Nimhstrakm
and krs.semester<=3)as Nlipktrakm,
(SELECT sum(sks) FROM `identitas_mhs`
INNER JOIN `krs` ON (`identitas_mhs`.`kode_mhs` = `krs`.`kode_mhs`)
INNER JOIN `khs` ON (`krs`.`kode_krs` = `khs`.`kode_krs`)
INNER JOIN `mata_kuliah` ON (`krs`.`kode_automatkul` = `mata_kuliah`.`kode_automatkul`)
where identitas_mhs.no_mhs=Nimhstrakm
and krs.semester<=3)as Skstttrakm
FROM `identitas_mhs`
INNER JOIN `krs` ON (`identitas_mhs`.`kode_mhs` = `krs`.`kode_mhs`)
INNER JOIN `khs` ON (`krs`.`kode_krs` = `khs`.`kode_krs`)
INNER JOIN `mata_kuliah` ON (`krs`.`kode_automatkul` = `mata_kuliah`.`kode_automatkul`)
inner join `kdpstpt` on(`kdpstpt`.`kode_prodi`=`identitas_mhs`.`kode_prodi`)
where krs.semester=3
and identitas_mhs.tahun_angkatan =2007
and identitas_mhs.kode_prodi=7
group by identitas_mhs.kode_mhs
order by no_mhs
Ternyata sebuah query sql dapat dilakukan subquery lagi terlihat dari script diatas pada subquery pertama
where identitas_mhs.no_mhs=Nimhstrakm
Nimhstrakm mengambil nilai dari query pertama yaitu
select ("20081")as Thsmstrakm,("055006")as Kdptitrakm,
("E")as Kdjentrakm,(kdpst)as Kdpsttrakm,("")as smawltrakm,
(no_mhs)as Nimhstrakm,round((sum(mata_kuliah.sks*khs.nilai ))/
(sum(mata_kuliah.sks)),2)as Nlipstrakm,
sum(mata_kuliah.sks)as sksemtrakm,
Didalam subquery kitapun dapat membuat filtering kondisi dengan where didalamnya. Huuh ribet juga nih…. Sql diatas kalo di eksekusi lumayan lama sih ya kira-kira 2 menit untuk menghasilkan result record tapi lumayan buatku dari pada harus ketik 20.000 record yang sebulan ja blom tentu kelar hehehe… mungkin kalo dirampingkan dikit bisa lebih cepat berhubung gak ada dananya jadi segitu aja cukup lah .. ! hahahaha..
Filed under: Mysql


