Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Zamiana wartosci
Forum PHP.pl > Forum > Przedszkole
Crozin
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
arecki
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
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.