mam problem, może nie jest to trudne ale nie potrafię sobie wymyślić dobrego sposobu na rozwiązanie następującego problemu.
Posiadam bazę danych a w niej przykładową tabelę, wymyśloną na potrzeby przykładu:
id_item | name_item | price_item | .... 1 | Coś_1 | 20 | .... 2 | Coś_2 | 10 | .... 3 | Coś_3 | 40 | .... 4 | Coś_4 | 20 | .... 5 | Coś_5 | 30 | ....
oczywiście na pole "id_item" autoincrement, z jasnych przyczyn nie chcę zmieniać wartości tego pola
więc wymyśliłem aby dodać dodatkowe pole w tabeli dzięki któremu będzie można zmieniać kolejność wyświetlania się poszczególnych rekordów pole np. "show_item" autoincrement (choć nie koniecznie)
id_item | name_item | price_item | SHOW_ITEM | .... 1 | Coś_1 | 20 | 1 | .... 2 | Coś_2 | 10 | 2 | .... 3 | Coś_3 | 40 | 3 | .... 4 | Coś_4 | 20 | 4 | .... 5 | Coś_5 | 30 | 5 | ....
Rekordy z tej tabeli mają się domyślnie wyświetlać -ostatnio dodanych 6 (no chyba że zostanie zmieniona kolejność po przez modyfikację pola "show_item")
więc:
SELECT * FROM "tabela_items" WHERE "show_item" <> 0 ORDER BY "show_item" DESC LIMIT 6
(w zapytaniu warunek WHERE "show_item" <> 0, ponieważ usuwanie wybranych rekordów odbywa się na zasadzie ustawienia pola "show_item" = 0)
czyli, zakładając ze tabela "tabela_items" posiada 30 rekordów (od Coś_1 do Coś_30) w chwili obecnej:
1. Coś_30
2. Coś_29
3. Coś_28
4. Coś_27
5. Coś_26
6. Coś_25
wszystko wydaje mi się proste gdy chcę zmienić kolejność wybranego rekordu i ustawić go na pierwszej pozycji (ostatnich 6-ciu dodanych), zwiększając po prostu pole "show_item" o +1 od największego.
Moje pytanie jak to rozwiązać jeśli chciał bym dokonać zmiany wybranych rekordów np.


z
1. Coś_30
2. Coś_29
3. Coś_28
4. Coś_27
5. Coś_26
6. Coś_25
na
1. Coś_30
2. Coś_20
3. Coś_28
4. Coś_27
5. Coś_14
6. Coś_25
(nie wiem czy to coś zmienia ale interesuje mnie zmiana kolejności 6-ciu wyświetlanych elementów, domyślnie 6-ciu ostatnio dodanych)