Feeds:
Posts
Comments

Archive for November, 2010

Hai prenz … last post di taon 2010 nih…

Karena ada kesibukan … (ngodink) hehehehe :mrgreen: jadi ketemu deh permasalahan nya, dulu mah gak pernah terpikirkan gimana caranya untuk deleting record dengan subquerying …

Subquerying biasanya dilakukan dengan select statement mulu kalo di mysql, nah sekarang kejadian deh pengen delete record dengan kondisi yang di subquerying tersebut.

Contoh kasus nya adalah saya pengen menghapus record yang sama pada tanggal yang sama akan tetapi ada kondisi field yang berbeda.

contoh data :


Nah yang dikotak merahin itu diatas kebanyakan untuk field cause = cause_ori, maka saya ingin menghapus yang data cause = cause_ori nya

kalau di select dengan perintah dibawah ini :

select ab.nip, ab.dated, ab.cause, ab.cause_ori, count(ab.nip) as maxcount
from absence ab
inner join
( select nip, dated, cause, cause_ori
   from absence
   where cause <> cause_ori
   group by nip, dated
   order by nip, dated
) as a on ab.nip = a.nip and ab.dated = a.dated
group by ab.nip, ab.dated
having count(ab.nip) > 1
order by ab.nip, ab.dated

mendapatkan hasil seperti :

Bejibun kan datanya dan itu double kalo di scroll ke bawah bahkan ada yang triple, dan gak mungkin saya looping satu persatu untuk menghapus data tersebut.

Nah, sekarang bagaimana ingin menghapus records yang buanyak tersebut dengan menggunakan perintah SQL Statements ???

Setelah putar – puter otak dan RTFM, maka didapat SQL statemen untuk delete seperti dibawah ini :

delete deleted.* from absence as deleted
inner join
(
   select ab.ab_id
   from absence ab
   inner join
   ( select nip, dated, cause, cause_ori
     from absence
     where cause <> cause_ori
     group by nip, dated
     order by nip, dated
    ) as a on ab.nip = a.nip and ab.dated = a.dated
   group by ab.nip, ab.dated
   having count(ab.nip) > 1
   order by ab.nip, ab.dated
) as joined on deleted.ab_id = joined.ab_id

sudah deh, dengan meng-execute statement tersebut … semua data yang tidak diinginkan … lenyap dari permukaan harddisk :mrgreen:

Segetoh dulu deh … dikhawatirkan lupa, mendingan sharing dengan teman-teman… siapa tahu ada yang perlu juga :mrgreen:

Salam,
😎
Man’z

Advertisements

Read Full Post »