![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 17 Dołączył: 13.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Czy wraz z nowymi update mysql, pojawiła się jakaś alternatywa dot. w miarę swobodnej zmiany kolejności wyświetlania pól w bazie?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Eee?(IMG:style_emoticons/default/questionmark.gif)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 17 Dołączył: 13.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Pytam po prostu czy istnieje jakiś sposób, aby w jedno zapytanie władować pozycje dwóch elementów i je między sobą zamienić, czy też trzeba odczytywać po kolei pozycje dwóch elementów, po czym ładować kolejne dwa zapytania updatujące te dwa rekordy o nowe pozycje (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Tobie chodzi o sortowanie wyników, czy jak ?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 17 Dołączył: 13.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Mam tabelę w bazie o naziwe "moje_samochody":
Cytat | ID | POSITION | NAME | | 2 | 1 | Volvo | | 7 | 2 | Porche | | 22 | 3 | Punto | I teraz jak zamienić miejscami Punto z Volvo, bazując na kolumnie position ? Czyli po prostu jak zmienić liczby 1 <--> 3 jak najmniejszą ilością zapytań? Ten post edytował Majkelo23 7.09.2014, 13:15:15 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Poczytaj o ORDER BY, które istnieje w takim mysql'u od chyba samego początku (IMG:style_emoticons/default/wink.gif)
W twoim przypadku było by to:
wynik byłby od 1 do 3, lub:
wynik byłby od 3 do 1. Ten post edytował by_ikar 7.09.2014, 15:32:31 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Mam tabelę w bazie o naziwe "moje_samochody": I teraz jak zamienić miejscami Punto z Volvo, bazując na kolumnie position ? Czyli po prostu jak zmienić liczby 1 <--> 3 jak najmniejszą ilością zapytań? To jakiś challenge? Jednym zapytaniem...
Ten post edytował mmmmmmm 7.09.2014, 20:04:28 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 17 Dołączył: 13.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Może po prostu przytoczę temat bo nie o to mi chodzi: http://www.forumweb.pl/php/zmiana-kolejnos...apytaniem,50611
Jest tam takie zapytanie: Kod UPDATE tabela SET order = IF (order = $stary_order, $nowy_order, order + SIGN($stary_order - $nowy_order)) WHERE order >= LEAST($nowy_order, $stary_order) AND order <= GREATEST($nowy_order, $stary_order) które niestety zwraca taki błąd: Cytat #1064 - Something is wrong in your syntax obok 'order = IF (order = 1, 2, order + SIGN(1 - 2)) WHERE order >= LEAST(2, 1) AND or' w linii 1 I nie wiem, w czym może być problem? Ew. jak to zastąpić czymś sensownym? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Problem jest w tym, że ch...wo nazywasz pola.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
`order`
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 17 Dołączył: 13.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
OK, a powiedzcie mi jeszcze jedną rzecz - załóżmy, że dodaję do bazy nowy rekord za pomocą instrukcji INSERT INTO (...) - jak z automatu przypisać najwyższy order dla tego rekordu? Najpierw muszę wykonać dodatkowe zapytanie, wyciągające najwyższy order i potem mając ten wynik, dodaję +1 i wrzucam z tą wartością nowy rekord, czy da się to uwzględnić w jednym zapytaniu ? auto_increment chyba tutaj nie jest na miejscu, ponieważ zależy mi też na tym, aby dziur nie było pomiędzy rekordami, to dosyć ważne w tym wypadku.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli nie auto_increment, to tak jak napisałeś - pobrać max() i +1
Ten post edytował Turson 8.09.2014, 12:06:01 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 17 Dołączył: 13.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Coś z tym zapytaniem nadal jest nie tak. Co prawda błędu żadnego nie zwraca, ale źle zmienia te ordery.
Przed wykonaniem zapytania: (IMG:http://s6.ifotos.pl/img/demo1png_easxpwe.png) Zapytanie: Kod UPDATE tabela SET position = IF (`position` = 4, 1, `position` + SIGN(4- 1)) WHERE position >= LEAST(1, 4) AND position<= GREATEST(1, 4) Po wykonaniu zapytania: (IMG:http://s6.ifotos.pl/mini/demo2png_easxpws.png) Jak widać w zapytaniu, chciałem zamienić pozycję czwartą z pierwszą. I prawie się udało bo rekord 4-ty dostał pozycję 1-szą, ale już rekord 1-szy zamiast dostać pozycję 4-tą, dostał pozycję 2-gą. Gdzie leży błąd? Ten post edytował Majkelo23 8.09.2014, 12:26:14 |
|
|
![]()
Post
#14
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Dostales od mmmmmm poprawne zapytanie.... bez IFow.... czemu go nie uzyjesz? Jedno proste zapytanie, ktore rozwiązuje sprawę
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 18:46 |