Mysql markiranje posjecenih redova

Dakle imam ovako nesto:

Tabela sa nekim poljima od kojih cemo jedno zvati moje_polje. Ono je i bitno. To moje_polje je popunjeno id-evima iz druge tabele koju cemo zvati old. Ta polja treba zamjeniti id-evima trece tabele koju cemo zvati new. Druga i treca tabela imaju jedno polje koje ima iste vrijednosti u obe. Tako da se po ovom polju mogu porediti tabele. Posto ne znam napisati tako komplikovan query, tj. znam ali da ne testiram citav dan da li radi kako treba ja sam uradio ovako:

Prosao kroz prvu tabelu i pokupio u niz $old sve te “stare” id-eve. Prosao kroz trecu tabelu, i poredio sa drugom tabelom ona ista polja da bih dobio koji su to 'novi" id-evi koje trebam. Njih sam ubacio u niz $new. E sad imam 2 niza sa starim i novim id-evima i samo treba u prvoj tabeli da stara zamjenim novima i to sam uradio ovako:

for ($i = 0; $i < count($old); $i++){
$update_q = db_query("UPDATE ".$table." SET moje_polje = '$new[$i]' WHERE ".$table.".moje_polje = '$old[$i]'");
}

Ovo radi ok sve dok nemam istih id-eva u oba niza tj. old = [1, 4, 7] , new = [4, 12, 17]

Prvi prolaz ce zamjeniti sve jedinice prvog niza sa 4-kom drugog niza. Drugi prolaz ce sve 4-ke prvog niza zamjeniti 12-kom drugog niza. Ali sjetite se prvog prolaza. Tamo sam vec dobio 4-ke i sad u drugom prolazu i one ce biti zamjenjene 12-kama a to necu. Jer nakon prvog prolaza prvi niz je [4, 4, 7]!

Trebalo bi mi nesto tipa zamjeni sva polja osim onih koja si maloprije zamjenio :slight_smile: mysql_affected_rows je najblize sto se mogu sjetiti al ne pomaze. Jer ova funk. samo broji koliko je redova mjenjano ali ne i koji su to redovi.

Ako možeš dodati još jedno polje u tabelu onda tako riješi :slight_smile: inače teško…
Recimo ako ti je polje id autonumber onda je vjerovatno pozitivno, a ako je tip int onda može biti i negativno pa probaj prvo dodjeljivati negativne id-ove (moje_polje = -’$new[ i ]’) a onda nakon završetka svega sve id-ove još jednom negirati (“update $table set moje_polje=-moje_polje”). Tako nekakav trik.

[quote=vedran]Ako možeš dodati još jedno polje u tabelu onda tako riješi :slight_smile: inače teško…
Recimo ako ti je polje id autonumber onda je vjerovatno pozitivno, a ako je tip int onda može biti i negativno pa probaj prvo dodjeljivati negativne id-ove (moje_polje = -’$new[ i ]’) a onda nakon završetka svega sve id-ove još jednom negirati (“update $table set moje_polje=-moje_polje”). Tako nekakav trik.[/quote]

Bravo Vedrane silo nebeska! :smiley: Uspjelo je s tim minusima :slight_smile: A na sta si mislio sa dodatnim poljem, cisto da znam i tu foru. Nesto tipa polje “last_changed”?