Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Zamiana wartosci
Crozin
post 27.01.2007, 21:33:33
Post #1





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


mam taka tabele:
Kod
+----------------+
|    wwe_menu    |
+--+----+--------+
|ID|Name|Position|
+--+----+--------+
|1 |tra |     3  |
|2 |la  |     8  |
|3 |buuu|     5  |
+--+----+--------+


chcialbym przy uzyciu jednego zapytania (albo jak najmiejszej ilosci zapytan) wykonac takie cos: (do dyspozycji mam jedynie ID jednego wiersza)
w $ID mam "2" (ID jednego z wierszy)
zamienic wartosci "Position" w wierszu o ID = $ID z wierszem o ID miejszym od $ID (najblizszym)... probowalem robic cos takiego:
  1. <?php
  2. /*
  3. * PREFIX = wwe_
  4. * $SQL->Query() - wykonuje zapytanie
  5. * $SQL->GetField() - pobiera wartosc kolumny z jednego wiersza
  6. */
  7.  
  8. $Query='SELECT Position FROM '.PREFIX.'menu WHERE ID='.$_GET['id'];
  9.  $CurrentElementPosition=$SQL->GetField($Query);
  10.  
  11.  $Query='SELECT Position FROM '.PREFIX.'menu WHERE Position < '.$CurrentElementPosition.' LIMIT 1';
  12.  $LowerElementPosition=$SQL->GetField($Query);
  13.  
  14.  $Query='(UPDATE '.PREFIX.'menu SET Position = '.$LowerElementPosition.' WHERE Position = '.$CurrentElementPosition.') 
  15.  UNION
  16.  (UPDATE '.PREFIX.'menu SET Position = '.$CurrentElementPosition.' WHERE Position = '.$LowerElementPosition.')';
  17.  $SQL->Query($Query);
  18. ?>


niestety trzecie zapytanie (ktore podmiania wartosci zwraca blad):
Kod
      Query: (UPDATE wwe_menu SET Position = 1 WHERE Position = 2) UNION (UPDATE wwe_menu SET Position = 2 WHERE Position = 1)
Error #1064: Something is wrong in your syntax obok 'UPDATE wwe_menu SET Position = 1 WHERE Position = 2) ' w linii 1
Go to the top of the page
+Quote Post
arecki
post 27.01.2007, 22:01:11
Post #2





Grupa: Zarejestrowani
Postów: 222
Pomógł: 35
Dołączył: 6.02.2005

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


Kod nie jest do użycia tylko do poprawienia. Chodzi tylko o zasadę działania.

Q1 = SELECT id, position FROM wwe_menu WHERE id<$ID ORDER BY id DESC LIMIT 1

Q2 = SELECT position FROM wwe_menu WHERE id = $ID

Q3 = UPDATE wwe_menu SET position = position_from_q1 WHERE id=$ID

Q3 = UPDATE wwe_menu SET position = position_from_q2 WHERE id = ID_FROM_Q1


--------------------
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:39