Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Изменение порядка строк MySQL (http://forum.oszone.net/showthread.php?t=31627)

ilan 18-07-2003 12:43 216262

Может кто-нибудь посказать алгоритм (или функцию) для перемещения строки в таблице MySQL на несколько позиций вверх/вниз. Чтобы она именно хранилась с таким id, а не только выводилась.

Megabyte 21-07-2003 10:36 216263

Хмммм.... А смысл? По большому счёту клиенту без разницы, в каком именно порядке строки хранятся, ему важно в каком порядке сервер их выдаёт (вообще-то разница есть, но она влияет только на быстродействие сервера). Сделай ID в строках в нужном порядке и используй ORDER BY (select id, field1, field2,... from my_table order by id) - сервер будет выдавать тебе строки в нужном тебе порядке.

ilan 21-07-2003 11:08 216264

а вот как *
Цитата:

Сделай ID в строках в нужном порядке
? я, собственно про это и спросил....:)

Пример: Нужно чтобы строка с данными test1 * * test2 выводилась второй. всегда.

id * *field_1 * field_2

1     data1    data2
2 * * data1 * *data2
3 * * data1 * *data2
4 * * test1 * * test2
5 * * data1 * *data2

Если у одной строки меняешь ID (допустим 4 на 2) - то он совпадет с уже существующим (последствия я не знаю).

Megabyte 21-07-2003 14:25 216265

Ну, в зависимости от ограничений, навешанных на таблицу, сервак может позволить существовать двум строкам с одинаковым ID, а может и не позволить (органичение уникальности по ID). Если не даёт - меняешь у строки с ID=2 поле ID на любое неиспользуемое (например 0), потом у строки 4 делаешь ID=2, потом ID=0 меняешь на ID=4. Стандартная задача перестановки двух переменных. Вот SQL-код:
Код:

update my_table set ID=0 where ID=2;
update my_table set ID=2 where ID=4;
update my_table set ID=4 where ID=0;


ilan 21-07-2003 14:56 216266

Спасибо.

Именно это мне и нужно было. И еще, похоже, надо будет автоинкремент убрать с поля ID.

видимо надо купить книгу по азам программирования. функции сортировки и все такое. Может, кстати, подскажешь чего-нибудь стоящее?

Megabyte 22-07-2003 11:05 216267

Цитата:

И еще, похоже, надо будет автоинкремент убрать с поля ID.
Я провёл опыт - автоинкремент ему не мешает, он только требует уникальности и всё, тот SQL-код для изменения ID-шников прекрасно работает и при автоинкремент не сбивается. Так что можешь его оставить.
А по поводу книг... Сам я учил программирование ещё на Партнёре-0101 и Spectrum-е, сейчас книги по программированию для начинающих не читаю и ничего посоветовать не могу. Но если у тебя есть доступ в Инет, поищи на Яндексе или Гугле что-нибудь типа "программирование для начинающих" или что-нибудь подобное


Время: 18:26.

Время: 18:26.
© OSzone.net 2001-