Query banyak tabel

Halo para pengguna Yii, mau tanya nih. Bagaimana caranya men-query banyak tabel secara efisien.

Misalnya begini saya punya 5 tabel yaitu user, profil, pendidikan_formal, organisasi dan pengalaman_kerja. kemudian saat tertentu saya ingin mendowload data2 tersebut sesuai dengan kriterian yg dibutuhkan. Selama ini sy menggunakan cara seperti ini:




// semua tabel berelasi dg tabel user. dan karena profil hanya boleh ada satu pd setiap user maka tidak di query lagi.


foreach($user as $key => $items) {

  $pendidikanFormal = get pendidikan formal

  $organisasi = get organisasi

  $pengalamanKerja = get pengalaman kerja

  // simpan ke array

}

generate ke excel



Masalahnya muncul ketika datanya ratusan/ribuan. errornya begini:




Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 82 bytes) in yii/framework/db/ar/CActiveRecord.php on line 1601



Mungkin teman2 semua punya solusinya?. terima kasih sebelumnya.

script-nya mmng seperti itu bro? tidak dipisah dengan penutup saat loopnya ‘;’ ?

itu cuma ilustrasinya. bukan script sebenarnya ;D

tambahan:

data pendidikan, pengalaman kerja dan organisasi yg diambil cuma yg terakhir.

kalo ngequerynya sebagian2 gimana?

misalnya 100 user dulu baru dump ke excel, dst

berarti mengambil dta jgan mengunakan opersi spt itu (mengambil query sekaligus dalam satu operasi query pasti berat eksekusi nya ) coba di criteria dng AR, lebih enak diparsial

gunakan konsep AR : one to many, many to many

kalau kayak gitu repot mas ;D

Mungkin bisa diperjelas maksudnya?. soalnya itu sudah pake AR. jadi ada 5 model yg berhubungan.




// User HAS_MANY: PendidikanFormal, Organisasi dan PengalamanKerja.

// User HAS_ONE Profil

User

// BELONGS_TO User

Profil


// BELONGS_TO User

PendidikanFormal

Organisasi

PengalamanKerja



Dengan cara diatas sy bisa mengambil dari dari user dan profil. tetapi sy kesulitan mengambil data dari pendidikan formal, pengalaman kerja dan organisasi. soalnya datanya harus yg terakhir. ada saran?:D

owch! pantes, kirain fitur baru di yii bisa langsung $pendidikanFormal = get pendidikan formal :)

btw, mamang fk $pendidikanFormal dan yang lainnya di table user seperti apa?

single id -> in(‘1’)

atau

multi id -> in(‘1,2,3,4,5’)

atau ada field DATE disetiap tabel fk itu?

kalau query di kasih limit, apakah masih error?

karena waktu di generate ke excel query terbawah semua nya oleh sebab itu diparsial

kalau boleh tahu generate ke excel nya pake apa dan gimana?, masalah nya kayak nya waktu generate ke excel masalah itu muncul ( pernah ngalamin sih), kalau mau ngambil data jangan tabelnya tapi fielnya, seharusnya yg di get fieldnya, dan jg relasi nya dengan fieldnya yg mengacu ke tabelnya

mengambil data terakhir, setahu saya dengan tau tanpa Yii kita perlu mengambil nilai max dari value tertentu,

misalnya cari dulu max tgl join perusahaan untuk user id tertentu

kemudian Find( user_id = xx and tgl = hasil_dari_max ) untuk mendapatkan record tertentu,

begitu juga untuk type data yang lain,

HRD emang ribet dengan urusan beginian gan, yang sudah terbiasa pasti desain DB-nya sudah siap-siap dengan ke ginian…

kalau dikasih limit tidak error. cuma karena nantinya di export ke excel, kayaknya agak ribet :D. mungkin ada saran?. sementara ini sy buat tabel sendiri u/ menampung pendidikan terakhir

ya memang datanya banyak.

apa config servernya sdh di set full

kya eksekusi timenya digedein:


max_execution_time = 120

pengaruh ga ya?

ningkatin memory sama batas waktu eksekusi gak bakal menyelesaikan masalah kalo datanya makin lama makin tambah besar :)

Bagimana jika menggunakan seperti konsep pagination, jadi data diambil dengan limit tertentu misal 100, setelah page 1 selesai lanjut ke page 2.

IMHO

dengan catatan, tidak ada masalah dalam menterjemahkan dari AR ke array,

sehingga Menghabisan memorynya akibat besarnya array, dan temp yang dipegang excel, maka recomendasi terbaik adalah melimit kan nya dengan extra management…

hmm, kalau request time g masalah. sy pernah ngasih memory limit ke 256mb juga g ngaruh:(

Tetapi anehnya kalau di localhost g ada masalah ???

bener sekali, soalnya sy sudah pernah nyoba cara itu :D

ya kalau yg backup g males aja ;D . soalnya data yg mau direkap bisa mencapai 1000 bahkan 2000:(

apa datanya hrs disimpan dulu ke file kemudian baru dijadiin excel?

betul kayaknya masalahnya pada saat data dijadiin array kemudian baru diubah ke excel. apa ada alternatif lain?

waduh kapan ya yii 1.1.6 keluar, katanya kan ada query buildernya. pake findBySql juga sama problemnya.

gak bisa pake alias … hehehehe.

kalo di render satu2 setiap kriteria group yg kita butuhkan bisa mabok … kwkwkwkwkw.

kalo menurut ane sih lebih hati2 saja membuat tables (perhatikan struktur datanya)

harus bisa maksimal penggunaannya. semakin sedikit table semakin baik;

bener gak ya ??? hehehehe. maklum ane merasa gak pnah dapet pelajaran struktur data pemrogramman.

suka tidur kalo di kuliah … kwkwkwkwkw