Autor Zpráva
Libor Potuček
Profil *
Jeden dotaz od začátečníka ..... :)

Mám tabulku "MyISAM" s nazvem: HLASOVANI v které potřebuji aktualizovat jeden řádek / sloupec jménem BODY (tinyint)

Tento sloupec předpokládá uložené číselné hodnoty 0 - 100 jako by procenta.

Budu mít třeba uloženo '50' a nově vkládaný údaj má '100'.... nejdříve potřebuji mezi těmito hodnotami udělat aritmetický průměr a tím pak nahradit původní hodnotu BODY (což bude v tomto případě '75') ... potřebuju to zaokrouhlovat na celá čísla jakoby round() PHP ....

Jde mi o to aby byla operace bezpečná v to aby mezi SELECTem a finálním UPDATE / INSERTem nedošlo k tomu že někdo jiný uloží nový údaj dřív a konzistece dat by šla do kopru.... zároveň se chci vyhnout "zamknutí tabulky" nebo transakcím, které jsem zatím vůbec nepochopil ikdyž se prý nato používají........?..... hlavou mi vrtá že by to mohlo jít vtěsnat do jedniného rozšířeného INSERTU na úrovni MYSQL která má i výpočetní matematické funkce, ale netuším jak nato, poradí někdo? Díky
Radek9
Profil
Libor Potuček:
To stačí udělat přímo v updatu:
UPDATE tabulka SET sloupec = (sloupec + 100) / 2 WHERE id = 1

Pokud je sloupec typu int, zaokrouhlí se to samo.
Alphard
Profil
A počet hlasování vás netrápí? Jestli hodnocení 50 % je výsledkem hlasování třeba 100 uživatelů, tak jediné další hodocení to má zvednout na 75 %?
Doporučuji každé hlasování vkládat jako nový řádek a spočítat to až při výpisu, lépe se tak např. odhalí podvody apod.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: