Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Indexy kolejności
Forum PHP.pl > Forum > Bazy danych > MySQL
eai
Hej.


Załóżmy że mam tabelę:
Kod
ID | NAME | GRUPA | INDEX


A w niej takie wartości:
Kod
1 | test | 1 | 1
2 | test | 1 | 2
3 | test | 2 | 1
4 | test | 2 | 2
5 | test | 1 | 3
6 | test | 1 | 4
7 | test | 1 | 5
8 | test | 3 | 1
9 | test | 1 | 6


Teraz o co chodzi:
ID - wiadomo identyfikator dla wiersza
NAME - jakaś tam nazwa
GRUPA - czyli przynależność do jakieś tam grupy
INDEX - jest to liczba porządkowa według której dane elementy wyświetlają się na stronie, index jest dla każdej grupy osobny zaczynając od 1

Funkcją w PHP będąc w danej grupie przesuwam rekordy (góra/dół), wtedy zamieniam miejscami obok siebie indeksy w danej grupie.

Dodając nowy rekord do danej grupy zwiększam sobie index od ostatniego+1 itd..,
schody zaczynają się gdy usuwam rekord wtedy muszę powyżej tego ID w tej grupie zrobić UPDATE index=index-1
Tak żeby zachować kolejność, i żeby nowy rekord był jako ostatni. Ale gdy chcę usunąć naraz kilka rekordów to już pojawia się problem.

Macie jakiś pomysł jak najłatwiej zmieniać indexy zachowując kolejność, gdy usunę np co drugi rekord?
Skobi
szczerze mówiąc to robiłem coś podobnego i jeszcze było tak, że mogłem zamieniać w górę i w dół.
Napisałem sobie do tego procedurę w pl/pgsql, ale to żeby martwić się tym, że zostanie jakaś dziura pomiędzy indexem kolejności. Przecież dla bazy nie ma to absolutnie nic do znaczenia. A i dla działania nie ma to znaczenia bo posortuje tak samo.
abc667
jeżeli nie chcesz mieć przerw i brakujących indeksów dla grupy możesz wyciągnąć rekordy dla danej grupy ORDER BY index a potem w pętli updateować kolejne rekordy kolejnymi liczbami

chociaż tak jak napisał Skobi większego znaczenia to mieć nie powinno
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2020 Invision Power Services, Inc.