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%)
|
Chcąc zamienić coś miejscami nie dodajesz wartości, przecież ilość wpisów pozostaje taka sama...
Żeby zamienić dwa wiersze miejscami trzeba zapamiętać do zmiennej wartość jednego wiersza, wstawić w to miejsce zawartość drugiego a potem wpisać wartość z pamięci do drugiego. edit: dla bezpieczeństwa stosuje się transakcje, ale nie pamiętam czy zwykłe MyISAM to obsługuje (chyba InnoDB trzeba używać do transakcji) Ten post edytował Darti 8.06.2007, 01:30:13 |
|
|
|
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
Darti Ale w jakiś sposób musisz określić między jakie wi... 4.06.2007, 17:51:02
Black-Berry Testując to wynikł jeszcze jeden problem... 8.06.2007, 01:13:38 ![]() ![]() |
|
Aktualny czas: 25.12.2025 - 19:17 |