Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zamiana miejscami rekordów
shpyo
post
Post #1





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Witam,
czy wiem ktoś czy jest jakaś komenda w mysql która zamienia miejscami ze sobą dwa rekordy (np. o id=2 i id=5) questionmark.gif

php mogę to zrobić ale to będzie aż 4 zapytabia do bazy:
- zanaczenie rekordu o id=2
- zanaczenie rekordu o id=5
- zapisanie tego co jest w 2 na 5
- zapisanie tego co jest w 5 na 2

Można to zrobić szybciej w mysql?

pozdr,


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




  1. UPDATE tabela SET
  2. id = ( IF( id==5, 2, 5) )
  3. WHERE id IN (2, 5)


Ale swoją drogą - jest to raczej mało logiczne żądanie, i naprawdę trudno mi wymyślić sytuację, gdzie taka operacja byłaby konieczna.

Niestety - rozwiązanie takie nie zadziała (chyba winksmiley.jpg ) jeżeli Id jest kluczem głównym, czyli unikalnym.


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
shpyo
post
Post #3





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


id jest kluczem głównym i raczej nie zadziała :/
będę musiał się chyba poratować phpem


--------------------
Go to the top of the page
+Quote Post
Lardux
post
Post #4





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 19.05.2005

Ostrzeżenie: (0%)
-----


mozna wiedziec po co chcesz to zamieniac? przeciez skoro cos zrobiles kluczem glownym to chyba wlasnie po to aby dany rekord byl jednoznacznie identyfikowalny prawda? a w momencie kiedy pozwolisz na takie zamiany to juz ten warunek nie bedzie spelniony, ale jesli np ma to sluzyc kolejnosci wyswietlania to mozesz dodac kolejna kolumne w ktorej bys sobie wlasnie sposobem opisanym wyzej wszystko ustawial, jezeli natomiast chodzi dokladnie o zamiane wartosci rekordu o id=2 z tym o id=5 to przeciez mozesz zawsze napisac sqla ktory zamieni ci wszystkie pola zostawiajac id nie zmienione - efekt bedzie ten sam...
Go to the top of the page
+Quote Post
TomASS
post
Post #5





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


Utwórz pole o nazwie kolejnośc i je zmieniaj, a później:
  1. SELECT *
  2. FROM tabela ORDER BY kolejnosc;

Przecierz nie ma najmniejszego sensu zmiana klucza głównego i unikalnego tabeli.

Ten post edytował TomASS 30.10.2005, 08:46:09


--------------------
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 - 06:20