just me











{March 13, 2008}   Pivot di mysql

akhirnya ada kerjaan juga nih.. hehe..

shinta lagi bikin report, querynya :

select t1.`NIP`, t3.`nama`, t2.`tahun`, t2.`term`, t4.`PRODI`, sum(t1.`SKS`) as sks
from tbl_rencana_kerja as t1, kelas_mata_kuliah as t2,
`tbl_daftar_staf` as t3, `tbl_matakuliah` as t4
where t1.`ID_Kelas` = t2.`id_kelas` and t2.`kd_mk` = t4.`KD_MK`
and t2.`kd_kur`= t4.`KD_KUR` and t1.`NIP` = t3.`kode_identitas`
group by t1.`NIP`, t2.`tahun`, t2.`term`,t4.`PRODI`, t4.`Dept`
order by t1.`NIP`, t4.`Dept`

hasilnya:

NIP | Nama |tahun |term |PRODI | sks

tapi layout yang diminta:

NIP | Nama | tahun | term | PRODI1| PRODI2|PRODI3

123 |Tes | 2006 | 2 | 3 | 3 | 2

Inget, pernah ngalemin ini waktu bikin coding buat project, eh akhirnya dengan bodohnya malah ngubah struktur databasenya.. terus kata wida, bisa kok ditampilin kesamping, pake yang namanya pivot.. cuman waktu itu pake sql server

Nah, sekarang jadi langsung google deh.. search pivot di mysql ..ketemu beberapa site..

jadilah querynya :

select t1.`NIP`, t3.`nama`, t2.`tahun`, t2.`term`, sum(t1.sks*(1-abs(sign(PRODI-31)))) as prodi31
, sum(t1.sks*(1-abs(sign(PRODI-24)))) as prodi24
from tbl_rencana_kerja as t1, kelas_mata_kuliah as t2,
`tbl_daftar_staf` as t3, `tbl_matakuliah` as t4
where t1.`ID_Kelas` = t2.`id_kelas` and t2.`kd_mk` = t4.`KD_MK`
and t2.`kd_kur`= t4.`KD_KUR` and t1.`NIP` = t3.`kode_identitas`
group by t1.`NIP`, t2.`tahun`, t2.`term`,t4.`PRODI`, t4.`Dept`
order by t2.`tahun`, t2.`term`,t4.`Dept`,t1.`NIP`

setelah dicek, output nya bener..tapi kata shinta jadinya lama, soalnya ada sekitar 15 prodi… hiiks.. ga tau deh gimana lagi spy querynya bisa maksimal.. any idea?



Leave a Reply

et cetera