Skocz do zawartości
Zaloguj się, aby obserwować  
ToFFiK

Zapytanie ustawiające jeśli...

Polecane posty

Moje kolejne pytanie z serii "wht lepsze niż google", lecz szukałem i nie znalazłem odpowiedzi na moje pytanie, być może źle wpisywałem w google zapytanie.

 

Mój problem polega na tym że mam N rekordów, i ręczne przestawianie wartości każdego bedzie uciążliwe, dlatego chciałem jakieś zapytanie, które by sprawdziło wszystkie wartości pola "hours" i jesli bedzie mniejsze niż 10, automatycznie zmieniało na 10. Mógłby ktoś pomóc? :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

SELECT (...) where hours < 10;
UPDATE (...) SET hours = '10';

No i jeszcze mysql_num_affected_rows() żeby sprawdzić zmienione rekordy.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 

Chyba coś źle zrobiłem ;f

SELECT `1players` where hours < 10;
UPDATE `1players` SET hours = '10';

 

 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where hours < 10' at line 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dałęm z fromem, tyle że teraz pozmieniało mi wszystkie rekordy na 10

 

 

SELECT * FROM `1players` where hours < 10;
UPDATE `1players` SET hours = '10';

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No nic dziwnego, że pozmieniało ci wszystko na 10 - ten kod tak robi :)

 

To co zaproponował d.v jest rozwiązaniem na około - najpierw chciał, abyś pobrał rekordy przez SELECT, a potem skorzystał z UPDATE wykorzystując wcześniej pobrane rekordy :)

 

A to co zaproponował adam.mediacube jest idealnym rozwiązaniem ;]

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Można też inaczej, możliwe że Ci się przyda

 

UPDATE players SET hours =

CASE

WHEN hours < 10 THEN 10

END

 

z tym że możesz sobie dodać dowolną ilość warunków WHEN i nimi operować. Łatwiej przerzucić takie operacje na bazę niż mielić to pętlami np. w PHP.

 

 

UPDATE players SET hours =

CASE

WHEN hours < 5 THEN 10

WHEN hours < 10 THEN 15

WHEN hours < 15 THEN 20

WHEN hours < 20 THEN 30

END

Edytowano przez adam.mediacube (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×