Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 663 Pomógł: 6 Dołączył: 3.06.2007 Skąd: Kraków Ostrzeżenie: (0%)
|
Mam takie pytanie:
Mam tabelę mySQL a w niej np. 5 rzędów z wpisami ID NAZWA KOLEJ ----------------------- 1. | rząd_1 | 1 2. | rząd_2 | 2 3. | rząd_3 | 3 4. | rząd_4 | 4 5. | rząd_5 | 5 ---------------------- ( tabela #1 ) I teraz chcę wstawić nowy rząd pomiędzy rzad_2 i rząd_3. Wymyśliłem taki sposób, że na ustalam wartość kolejnośći nowego rzędu na średnią arytmetyczną rzędów pomiędzy. W tym wypadku kolejnośc = 2.5. Otrzymuje takie coś: ID NAZWA KOLEJ ----------------------- 1. | rząd_1 | 1 2. | rząd_2 | 2 6. | rząd_N | 2.5 3. | rząd_3 | 3 4. | rząd_4 | 4 5. | rząd_5 | 5 ---------------------- ( tabela #2 ) Ale żeby nie było późniejszych zawirowań sortuje tą tabelę tak aby KOLEJ nie zawierała zmiennoprzecinkowych liczb. Otrzymuję: ID NAZWA KOLEJ ----------------------- 1. | rząd_1 | 1 2. | rząd_2 | 2 6. | rząd_N | 3 3. | rząd_3 | 4 4. | rząd_4 | 5 5. | rząd_5 | 6 ---------------------- ( tabela #3 ) I wszystko wyglada pięknie ale sortowanie przeprowadzam za pomocą PHP co jest dość nieefektywne. Zna ktoś może sposób aby ( tabelę #2 ) posortowac do postaci ( tabeli #3 ) za pomocą zapytania SQL ?! |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 076 Pomógł: 62 Dołączył: 6.03.2005 Skąd: Wroc Ostrzeżenie: (0%)
|
Ale w jakiś sposób musisz określić między jakie wiersze wstawić ten nowy, w tym celu wcześniej pobierasz (przynajmniej jeden - poprzedni albo następny) jakiś wiersz, z którego już można wywnioskować resztę.
Dajmy na to że chcesz wstawić nowy wiersz pomiędzy 2 a 3 dotychczasowy, to: update tabela set kolej = kolej+1 where kolej > 2; insert into tabela values (null, nazwa, 2); Znamienna jest tutaj ta dwójka, o której przecież wiesz wcześniej bo właśnie po niej ma być nowy wiersz. |
|
|
|
Black-Berry Sortowanie tabeli mySQL 4.06.2007, 17:15:13
Darti pseudo:
update tabela set kolej = kolej+1 where na... 4.06.2007, 17:32:34
Black-Berry Kurcze rzeczywście byłbym za tym żeby użyć do tego... 4.06.2007, 17:39:28
Black-Berry Testując to wynikł jeszcze jeden problem... 8.06.2007, 01:13:38
Darti Chcąc zamienić coś miejscami nie dodajesz wartości... 8.06.2007, 01:28:31 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 16:24 |