![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 136 Pomógł: 0 Dołączył: 17.11.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
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?? Ten post edytował Domin 17.04.2006, 10:28:49 -------------------- Głupi wie wszystko, mądry uczy się całe życie.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
jedno zapytanie? w sensie UPDATE? nie, chyba nie da rady, ale możesz z dwóch zapytań zrobić jedno - poczytaj o UNION
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 136 Pomógł: 0 Dołączył: 17.11.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
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. Ten post edytował Domin 17.04.2006, 10:57:57 -------------------- Głupi wie wszystko, mądry uczy się całe życie.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 112 Pomógł: 20 Dołączył: 10.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
pisane z głowy, nie sprawdzane:
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. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 28.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
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) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 15:36 |