ToFFiK 33 Zgłoś post Napisano Sierpień 5, 2011 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
d.v 1409 Zgłoś post Napisano Sierpień 5, 2011 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
ToFFiK 33 Zgłoś post Napisano Sierpień 5, 2011 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
d.v 1409 Zgłoś post Napisano Sierpień 5, 2011 (edytowany) SELECT (czyli WYBIERZ) coś FROM (czyli Z) czegoś... SQL naprawdę jest dość prosty, zapytania przypominają proste zdania w języku angielskim http://dev.mysql.com/doc/refman/5.0/en/select.html Edytowano Sierpień 5, 2011 przez d.v (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
adam.gekosale 40 Zgłoś post Napisano Sierpień 5, 2011 UPDATE 1players SET hours = 10 WHERE hours < 10 Udostępnij ten post Link to postu Udostępnij na innych stronach
ToFFiK 33 Zgłoś post Napisano Sierpień 5, 2011 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
d.v 1409 Zgłoś post Napisano Sierpień 5, 2011 O widzisz, jeszcze lepiej. Chyba muszę jeszcze dospać Udostępnij ten post Link to postu Udostępnij na innych stronach
BlueMan 69 Zgłoś post Napisano Sierpień 5, 2011 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
ToFFiK 33 Zgłoś post Napisano Sierpień 5, 2011 Dzieki, działa Udostępnij ten post Link to postu Udostępnij na innych stronach
adam.gekosale 40 Zgłoś post Napisano Sierpień 5, 2011 (edytowany) 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 Sierpień 5, 2011 przez adam.mediacube (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach