Mysql Subquery

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..

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.