Yii Framework Forum: Query banyak tabel - Yii Framework Forum

Jump to content

  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

Query banyak tabel query-query Rate Topic: -----

#1 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 09 January 2011 - 10:52 PM

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

#2 User is offline   fastcrash 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 10-March 10
  • Location:South Jakarta

Posted 09 January 2011 - 11:34 PM

View Post__agus, on 09 January 2011 - 10:52 PM, said:

foreach($user as $key => $items) {
$pendidikanFormal = get pendidikan formal
$organisasi = get organisasi
$pengalamanKerja = get pengalaman kerja
// simpan ke array
}


script-nya mmng seperti itu bro? tidak dipisah dengan penutup saat loopnya ';' ?
0

#3 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 09 January 2011 - 11:42 PM

View Postfastcrash, on 09 January 2011 - 11:34 PM, said:

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

#4 User is offline   petra 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 218
  • Joined: 20-June 10

Posted 09 January 2011 - 11:58 PM

kalo ngequerynya sebagian2 gimana?
misalnya 100 user dulu baru dump ke excel, dst
0

#5 User is offline   YII alvs 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 53
  • Joined: 11-February 10

Posted 10 January 2011 - 12:18 AM

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
0

#6 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 10 January 2011 - 01:08 AM

View Postpetra, on 09 January 2011 - 11:58 PM, said:

kalo ngequerynya sebagian2 gimana?
misalnya 100 user dulu baru dump ke excel, dst

kalau kayak gitu repot mas ;D
0

#7 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 10 January 2011 - 01:19 AM

View PostYII alvs, on 10 January 2011 - 12:18 AM, said:

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

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
0

#8 User is offline   fastcrash 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 10-March 10
  • Location:South Jakarta

Posted 10 January 2011 - 02:13 AM

View Post__agus, on 09 January 2011 - 11:42 PM, said:

itu cuma ilustrasinya. bukan script sebenarnya ;D
tambahan:
data pendidikan, pengalaman kerja dan organisasi yg diambil cuma yg terakhir.


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?
0

#9 User is offline   YII alvs 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 53
  • Joined: 11-February 10

Posted 10 January 2011 - 02:39 AM

View Post__agus, on 10 January 2011 - 01:19 AM, said:

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


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
0

#10 User is offline   aqge 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 188
  • Joined: 02-September 10
  • Location:Indonesia

Posted 13 January 2011 - 11:05 PM

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....
Best Regard
Tidak ada coding yang salah
Yang ada hanyalah Coding yang lebih baik
0

#11 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 14 January 2011 - 04:42 AM

View Postfastcrash, on 10 January 2011 - 02:13 AM, said:

kalau query di kasih limit, apakah masih error?

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
0

#12 User is offline   fastcrash 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 10-March 10
  • Location:South Jakarta

Posted 14 January 2011 - 05:48 AM

View Post__agus, on 14 January 2011 - 04:42 AM, said:

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?
0

#13 User is offline   petra 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 218
  • Joined: 20-June 10

Posted 17 January 2011 - 05:48 PM

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

#14 User is offline   Angga Lingga 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 08-February 10

Posted 17 January 2011 - 10:04 PM

View Post__agus, on 14 January 2011 - 04:42 AM, said:

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


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

#15 User is offline   aqge 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 188
  • Joined: 02-September 10
  • Location:Indonesia

Posted 18 January 2011 - 04:57 AM

View PostAngga Lingga, on 17 January 2011 - 10:04 PM, said:

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...
Best Regard
Tidak ada coding yang salah
Yang ada hanyalah Coding yang lebih baik
0

#16 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 19 January 2011 - 08:53 PM

View Postfastcrash, on 14 January 2011 - 05:48 AM, said:

ya memang datanya banyak.

apa config servernya sdh di set full
kya eksekusi timenya digedein:
max_execution_time = 120


pengaruh ga ya?


hmm, kalau request time g masalah. sy pernah ngasih memory limit ke 256mb juga g ngaruh:(
Tetapi anehnya kalau di localhost g ada masalah ???
0

#17 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 19 January 2011 - 08:54 PM

View Postpetra, on 17 January 2011 - 05:48 PM, said:

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

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

#18 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 19 January 2011 - 08:56 PM

View PostAngga Lingga, on 17 January 2011 - 10:04 PM, said:

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

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?
0

#19 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 19 January 2011 - 09:00 PM

View Postaqge, on 18 January 2011 - 04:57 AM, said:

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

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

#20 User is offline   -=YiieRz=- 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 177
  • Joined: 27-October 10
  • Location:Jakarta

Posted 20 January 2011 - 03:13 AM

View Post__agus, on 09 January 2011 - 10:52 PM, said:

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.


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
belajar itu modal utama, tanpa percobaan itu tak akan berhasil. berdoa itu membuat kita percaya diri. YiieRz-SdgBlajar
www.yiiframework.com
0

Share this topic:


  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users