Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem z zapytaniem
MitS
post
Post #1





Grupa: Zarejestrowani
Postów: 262
Pomógł: 5
Dołączył: 8.02.2005
Skąd: Olsztyn / Zatorze

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


Witam,

mam malutki problem... otóż mam sobie takie dwie tabelki:

Kod
mysql> select *from tree;
+--------------+------------+
|   id             | parent      |
+--------------+------------+
|            1     |         0     |
|            2     |         1     |
|            3     |         1     |
|            4     |         1     |  
|            5     |         5     |
|            6     |         2     |
|            7     |         2     |
+--------------+-----------+
7 rows in set (0.00 sec)

mysql> select *from category;
+----+--------------+
| id   | nazwa        |
+----+--------------+
|  1 | aaaaaaaaaa  |
|  2 | bbbbbbbbbbb   |
|  3 | ccccccccccc   |
|  4 | ddddddddd   |
|  5 | eeeeeeeee   |
|  6 | fffffffffffffff    |
|  7 | ggggggggg    |
+----+--------------+
7 rows in set (0.00 sec)


i nie wiem jak stworzyć zapytanie którego wynikiem będzie zamiana miejscami pozycji o danym id i o id mniejszym o jeden np.
chciałbym zamienić w tabelce tree i categorry pozycje która ma id=3 z pozycją o jeden mniejszą razem ze zmianą nazw id czyli wynikiem będzie:

Kod
mysql> select *from tree;
+--------------+------------+
|   id             | parent      |
+--------------+------------+
|            1     |         0     |
|            2     |         1     |
|            3     |         1     |
|            4     |         1     |  
|            5     |         5     |
|            6     |         2     |
|            7     |         2     |
+--------------+-----------+
7 rows in set (0.00 sec)

mysql> select *from category;
+----+--------------+
| id   | nazwa        |
+----+--------------+
|  1 | aaaaaaaaaa  |
|  2 | ccccccccccc   |
|  3 | bbbbbbbbbbb   |
|  4 | ddddddddd   |
|  5 | eeeeeeeee   |
|  6 | fffffffffffffff    |
|  7 | ggggggggg    |
+----+--------------+
7 rows in set (0.00 sec)



próbowałem coś takiego:
$sql = "UPDATE category SET id=".($id-1)." WHERE id=".$id." AND SET id=".($id+1)." WHERE id=".($id-1);

ale niestety to nie działa ...
macie jakieś pomysły (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Ten post edytował MitS 18.10.2007, 18:35:21
Go to the top of the page
+Quote Post
kossa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


Nie możesz tak zrobić, bo id jest unikatowe a w czasie zamiany pojawiły by się dwa takie same bo takie zapytanie nie wykona się równoczesinie a nawet nie wiem czy się wykona, nie analizowałem aż tak.

Układanie takie realizuje się dodatkową kolumną int i tam dodajesz podczas dodawania rekordów kolejne wartości i na nich później operujesz, zamieniesz je ze sobą.

Łukasz
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 22:57