Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jednoczesna zmiana wartości
Forum PHP.pl > Forum > Bazy danych
Domin
Mam taki problem z jednoczesną zmianą wartości komórki w dwóch rekordach.

Wytłumaczę o co mi chodzi...
Mam tabelkę "kat" z następującą struktura i rekordami:

kat_id kat_title kat_order

1 Kat 1 10
2 Kat 2 20
3 Kat 3 30

i chcę w jednym momencie zmienić wartość np. rekordu 2 i 3. Czyli rekord 2 opuścić do dołu. A więc w rekordzie 2 dodaje 10 a w rekordzie 3 odejmuje 10. Czy da sie to zrobić za pomocą jednego zapytania?? Jeśli tak to w jaki sposób?? A jeśli nie to jak inaczej...

Albo jak wy byście to zrobili??
LBO
jedno zapytanie? w sensie UPDATE? nie, chyba nie da rady, ale możesz z dwóch zapytań zrobić jedno - poczytaj o UNION
Domin
Tak update, bo to jest tylko zaktualizowanie dwóch wartości bez zmiany pozostałych...

dzięki, napewno skorzystam... Zastanawiam się tylko jak zrobić to za pomocą nawet dwóch zapytań... bo przecież to są rekordy o id różnioącymi się nie np. o 1 tylko np. w jedynm wypadku o 10 a w drugim o 2... stałe są wartosci w kat_order bo poprzedni w kolejności ma o 10 mniej a następny o 10 więcej od poprzedniego.
siemakuba
pisane z głowy, nie sprawdzane:

  1. UPDATE
  2. tabela
  3. SET
  4. kat_order = IF(kat_order = 10, kat_order+10,kat_order-10)
  5. WHERE kat_order = 10 OR kat_order = 20;


potraktuj to jako szkielet, chodzilo mi o pokazanie jak mozna zrobic rozne updejty za pomoca jednego zapytania.

w podanym przykladnie, updejt bedzie dotyczyczyl wartosci gdzie kat_order = 10 lub kat_order = 20. Jezeli kat order=10, zostanie powiekszony o 10, jezeli nie 10 (czyli w naszym przypadku 20), zostanie pomniejszony o 10

pozdr.
Adiasz
mozesz napisac funkcje wywolywana AFTER UPDATE na tabeli "kat", w ktorej wyszukasz "kat_id" dla ktorego "kat_order" = NEW.kat_order AND kat_id != NEW.kat_id i ustawic mu wartosc kat_order = OLD.kat_order
(po zrobionym updacie jakiegos rekordu znajdujesz rekord ktorego kat_order jest rowna nowej wartosci w kat_order i kat_id jest rozny od kat_id rekordu zmodyfikowanego i stawiasz mu kat_order na stara wartosc rekordu zmodyfikowanego)
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-2025 Invision Power Services, Inc.