Arsip: Query didalam query..???

 
user image
more 14 years ago

ZeAL

Gantian ah.. sekarang gue yang nanya... :D :D gini.. gue punya table. table PEG_PERORANGAN dengan field id_user, nama dan punya detail : table PEG_PEKERJAAN dengan field id_user, no_urut, tgl_berlaku didalam table PEG_PEKERJAAN, tiap id_user bisa memiliki beberapa record. Gimana cara menampilkan dengan 1 query saja : SEMUA user yang terdaftar di PEG_PERORANGAN, TAPI hanya user yang memiliki tgl_berlaku TERBARU yang MINIMAL 3 tahun yang lalu dari TANGGAL SEKARANG Contoh, misalnya user A, punya 3 record di table PEG_PEKERJAAN : A | 1 | 2000/4/10 A | 2 | 2004/5/9 A | 3 | 2005/1/4 user A tersebut TIDAK ditampilkan ke list karena tgl_berlaku terbarunya (2005/1/4) tidak berjarak 3 tahun dari tahun sekarang (2006) B | 1 | 1995/4/10 B | 2 | 1997/5/9 B | 3 | 1998/9/9 B | 4 | 2000/1/4 user B tersebut MASUK ditampilkan ke list karena tgl_berlaku terbarunya (2000/1/4) berjarak lebih dari 3 tahun dari tahun sekarang (2006) (2006 - 2000 = 6) C | 1 | 1999/4/10 C | 2 | 2003/5/9 C | 3 | 2001/1/4 user C tersebut MASUK ditampilkan ke list karena tgl_berlaku terbarunya (2003/5/9) berjarak sama dengan 3 tahun dari tahun sekarang (2006) (2006 - 2003 = 3) jadi logikanya, ambil tanggal terbaru untuk user bersangkutan dan kurangi tgl sekarang dengan tanggal tersebut.. jika lebih atau sama dengan 3, maka tampilkan/masukan sebisa mungkin buat dalam 1 query.. jadi gue gak perlu hard coding cek 1-1 pake iterasi... :D oia, MySQL yang gue pake versi 4.. tolong ya, guys... gue lemah nih kalo query-queryan.. abis belajarnya rada telat.. . hihihihi... :D :D thanks yooo.... best regards, ZeAL
user image
more 14 years ago

jayadi888

Misalkan default 1thn = 365 hari, 3thn=1095hari kurang lebih SQL-nya :
SELECT  ID_USER FROM PEG_PEKERJAAN 
WHERE DATEDIFF(NOW(),TGL_BERLAKU)>=1095 AND
ID_USER NOT IN (SELECT ID_USER FROM PEG_PEKERJAAN WHERE DATEDIFF(NOW(),TGL_BERLAKU)<1095 GROUP BY ID_USER)
GROUP BY ID_USER
user image
more 14 years ago

ZeAL

gimana kalo datediff diganti jadi YEAR() ajah..??
user image
more 14 years ago

dinox

Menurut gw dah bener kalo peke tgl karena misal jika tgl sekarang 26 september tgl berlaku ditabel peg perorangan 20 desember 2003 berarti belum 3 tahun tuh, sedangkan kalo pake year hasilnya 2006-2003=3 thn jadinya dia akan tetap mask list padahal kurang ~3bln
user image
more 14 years ago

ZeAL

okay..okay.... ngalah deh... hehehehe.. :D :D :D tengkyu ya bos untuk jawabannya... best regards, ZeAL
user image
more 14 years ago

ZeAL

ehm... sory neh nambah dikit... Hasil dari query diatas cuma menghasilkan id_user aja... Gimana cara nampilin nama yang bersangkutan yah? tengkyu yooo.. :D :D
user image
more 14 years ago

jayadi888

@ZeAL: ehm... sory neh nambah dikit... Hasil dari query diatas cuma menghasilkan id_user aja... Gimana cara nampilin nama yang bersangkutan yah? tengkyu yooo.. :D :D
SELECT  PP.ID_USER, PR.NAMA FROM PEG_PEKERJAAN PP, PEG_PERORANGAN PR
WHERE DATEDIFF(NOW(),PP.TGL_BERLAKU)>=1095 AND
PP.ID_USER NOT IN (SELECT ID_USER FROM PEG_PEKERJAAN WHERE DATEDIFF(NOW(),TGL_BERLAKU)<1095 GROUP BY ID_USER)
AND PP.ID_USER=PR.ID_USER
GROUP BY PP.ID_USER, PR.NAMA
user image
more 14 years ago

ZeAL

canggiiihhhhh..... hehehehe.... :D :D Tengkyu bos...
user image
more 14 years ago

ZeAL

Sekarang kayaknya lebih mabok nih... tablenya sama kayak diatas. cuma tambah 1 field untuk table PEG_PEKERJAAN. Sekarang tujuannya adalah menghitung (count) jumlah total untuk masing2 golongan... table PEG_PERORANGAN dengan field id_user, nama dan punya detail : table PEG_PEKERJAAN dengan field id_user, no_urut, tgl_berlaku, golongan didalam table PEG_PEKERJAAN, tiap id_user bisa memiliki beberapa record. Tapi jangan lupa syaratnya : - Golongan yang diambil adalah golongan yang paling terbaru (tanggal terkini) dari id_user bersangkutan. - Yang perlu ditampilkan cukup nama golongan dan jumlahnya. --- oia, sekalian ah disini... di dalam table PEG_PERORANGAN kan ada field tgl_lahir.. nah, gimana cara bikin pengelompokan jumlah yah? jadi dikelompkkan berdasarkan usia : - < 20 - 20 - 25 - 26 - 30 - 31 - 35 - 36 - 40 - 41 - 45 - 46 - 50 - > 50 hasil akhirnya cukup tampilin jumlah masing-masing kelompok dan nama kelompoknya.. Bisa gak tuh kira2 hanya dengan 1 query aja? Tolong pencerahannya ya, bos... puyeng neh.. banyak kerjaan kudu selesai pada saat hampir bersamaan.. best regards, ZeAL
user image
more 14 years ago

ZeAL

Berhubung gak ada yang jawab, dijawab sendiri deh... untuk jawaban pertama :

select distinct  a.golongan, count(a.golongan)  from peg_pekerjaan a where a.sk_tgl in (select max(sk_tgl) from peg_pekerjaan b where b.id_user = a.id_user)  group by a.golongan
Tapi untuk jawaban kedua kagak tau neh.. ada yang tau..??
more ...
  • Pages:
  • 1
  • 2
  • 3
Share to

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com