Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jednoczesna zmiana wartości, w dwóch rekordach
Domin
post
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.
Go to the top of the page
+Quote Post
LBO
post
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
Go to the top of the page
+Quote Post
Domin
post
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.
Go to the top of the page
+Quote Post
siemakuba
post
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:

  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.
Go to the top of the page
+Quote Post
Adiasz
post
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)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 15:36