Wpis z mikrobloga

Mireczki z #programowanie #sql #mysql sprawa jest :)

Jest sobie polecenie do bazy

UPDATE promocja SET obnizka=obnizka+5 WHERE obnizka>0
Czyli w tabeli "promocja", dodaje 5 (potem interpretowane jako %) dla wszystkich userów, którzy już mają jakąkolwiek ustawioną obniżkę (stad >0).

Czy da radę (i jak) to dziadostwo zmodyfikować tak, aby nie dodawał na sztywno "+5"... tylko randomową wartość z podanego zakresu? powiedzmy (3-15)
  • 11
@Gaelwyn : kurde.. wkurza mnie ta składnia MariaDB

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE obnizka>0 SET obnizka=obnizka+FLOOR(RAND()*(12-3+1))+3' at line 1
a i jeszcze pytanie.. czy ten random doda tą samą randomową wartość wszędzie, czy będzie losował za każdym razem nową wartość?
wszedzie taką samą. Żeby dodać różną musiałbyś zrobić update w pętli dla każdego rekordu


@tallman: Zaraz, to to nie wykonuje pelnego kodu dla kazdego rekordu, tylko sie jakos #!$%@? czy cos? A jakby wrzucic index jako seed?

You have an error in your SQL syntax;


@Gippo86: co jest nie tak z ta skladnia? W MariaDB WHERE musi byc na koncu, czy jak?
@Gaelwyn: żyjemy... !!

udało się odpalić...
i tak

1. w MariaDB parametr WHERE musi być na końcu (dziwne to jak nie wiem, no ale ruszyło) ;)
2. jeżeli chodzi o wyniki z randoma - do każdej liczby dodaje inną randomową wartość (zapamiętałem kilka pierwszych... i gdzieś dodał 4, gdzieś 7... itd)

dzięki bardzo :)