[ DankoH @ 03.02.2011. 16:45 ] @
Pozdrav svima.


Imam pitanje u vezi update.

Imam tablicu artikli i polje stanje a posto imam puno "skladista" sa razlicitim stanjima korisnik moze odabrat skladiste i odvalit tipku "Obnovi stanja".
Dalje program radi trazenje po ostalim tablicama (dokumentima) i zbraja ulaze-izlaze i dobijem stanja za svaki artikl, odnosno za svaki row u artikli.
To radi tocno samo je sporo do bola jer radim za svaki row update u jednom loop-u.

Ono sto bi ja htio je napunit buffer sa svim updateima i sve odvalit u jednom komadu na MySQL. Googlam i ne nalazim rješenje pa se nadam da mi ovdje neko moze pomoci.
Znaci imam nesto kao:

Code:



do while recordset.eof=false

UPDATE artikli SET stanje = var_stanje WHERE artikli.artikl_id = var_art_id

loop




UPDATE artikli SET stanje = (1,1,1,1) WHERE artikli.artikl_id IN (1,2,3,4)

ovo mi ne radi. Error je da Operand should contain 1 column.

Ima li lijeka?

Unaprijed hvala!

[ bogdan.kecman @ 03.02.2011. 18:08 ] @
za taj upit koji si probao, kako mislis da on pogodi koji broj iz jednog da veze sa brojem iz drugog ..

mozes da uradis nekoliko stvari ... najbolja je da napravis temporary tabelu sa spiskom update-a koje hoces da napravis i onda sa

Code:

UPDATE artikli t INNER JOIN privremena s ON s.artikl_id = t.artikl_id SET t.stanje = s.stanje;


drugo sto mozes da uradis je da napravis bulk insert sa ON DUPLICATE KEY UPDATE ( http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html ) mada je ovo sa temp tabelom po meni bolje resenje.


trece - jaaaaaaaaako lose i sporo resenje je da napravis sa case
Code:

SET stanje = CASE when artikl_id=1 then 100 when artikl_id=2 then 255 when ... end 


[ DankoH @ 04.02.2011. 15:01 ] @
aha kuzim ovo sa privremenom tabelom. ok je tak.

al razmisljam da napravim tabelu "stanja" i u njoj stavim

id
skladiste_id
artikl_id
stanje


i onda ako recimo trazim obnovu stanja za skladiste 1 obrisem sve from stanja where skladiste_id = 1 i onda bulk insert into stanja....

to bi moglo tako funkcionirat.

a kad trazim stanje samo JOIN stanja ON artikli where skladiste_id = 1.


Mislim da cu tako i napravit.


Hvala na pomoci!!!
[ DankoH @ 04.02.2011. 16:30 ] @
evo radi ko metak sa extra tabelom. bit ce to dobro tako


lp