![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 492 Pomógł: 33 Dołączył: 16.08.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Jak za pomocą jednego zapytania zmienić wartość w komórkach tabeli, w których wartość jest maksymalną wartością z danej kolumny? Na przykład:
W kolumnie x mamy wartości: 1,1,1,1,2,2,2,3,3,3,3,4,4,4,4,4 Chciałbym nadpisać jakąś inną koumnę w tej tabeli inną wartością, ale tylko te wiersze, w których w kolumnie x jest 4. Jak to zrobić? Mogę pobrać selectem i wtedy obrobić w PHP, ale to będzie nieoptymalne. edyta: znalazłem w necie coś, co jest dostępne od MySQL 4.0.0:
To by mi pomogło, ale mam starszą wersję SQL (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Ten post edytował Hazel 12.03.2009, 14:55:50 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 17 Dołączył: 2.04.2008 Skąd: z Zabrza Ostrzeżenie: (0%) ![]() ![]() |
OMFG. To jakiej wersji MySQLa ty używasz że wersja 4.0.0 jest starsza?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 492 Pomógł: 33 Dołączył: 16.08.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Serwer, na którym stoi portal, używa 3.23.41 bodaj. Proszę nie komentować postępowania adminów serwera, bo to ja też potrafię zrobić, tylko zamienić to zapytanie na jakieś inne (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Jakieś pomysły?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 326 Pomógł: 121 Dołączył: 23.07.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Nie zoptymalizujesz tego duzo bardziej z prostego powodu: informacja o najwiekszej wartosci w kolumnie nie jest trzymana w informacjach o strukturze bazy danych, co oznacza, ze kazdorazowo musi zostac wyliczona poprzez przesledzenie wszystkich analizowanych wierszy. Co za tym idzie - nie da sie w jednym przebiegu znalezc maksymalnej wartosci i jednoczesnie ja zamienic na inna: w polowie tabeli MySQL nie moze przeciez wiedziec, co ma poprawiac, skoro aktualna w tym momencie wartosc maksymalna moze jeszce urosnac. Przez to MySQL zawsze bedzie musial zrobic 2 przebiegi - 1. zeby znalezc maksymalna wartosc, 2. zeby ja poprawic na inna.
A w rzeczy, ktora znalazles nie bedziesz wiedzial, ile tych wartosci poprawic... (limit X?) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 492 Pomógł: 33 Dołączył: 16.08.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ok, dzięki za wyjaśnienie. Wyprowadziłem sobie dodatkową zmienną w PHP, którą wprawdzie w specyficznych przypadkach trzeba pobierać z bazy, ale często da się ją obliczyć z danych, które pobieram przy innej okazji, więc jest nieco lepiej niż było. Teraz już wiem co zrobić, chociaż to będzie zdecydowanie bardziej skomplikowane niż mi się na początku wydawało.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 09:50 |