Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Поменять местами два значения в двух строках


Автор: Chuck 26.11.2007, 14:18
Всем привет!

Меня интересует вопрос такого рода: как можно запросами поменять два значения у одного и того же поля в двух записях.
Проще говоря, реализовать функции смены значения поля сортировки, реализовать "поднять запись вверх", "опустить запись вниз".

Спасибо.

Автор: Royan 26.11.2007, 15:09
Chuck, Даю идею. Смотрите, при выводе вы сортируете записи по какому либо полю, например по полю дата. Далее, если вы хотите это поле "поднять" все что вам потребуется это только обновить поле дата соответствующей записи, что сравнительно просто:

Код

UPDATE T_Posts SET T_Posts.date=SYSDATE() WHERE T_Posts.id=<passed_id>

Автор: Akina 26.11.2007, 15:17
Цитата(Chuck @  26.11.2007,  15:18 Найти цитируемый пост)
реализовать функции смены значения поля сортировки, реализовать "поднять запись вверх", "опустить запись вниз".

Создайте поле (возможно, синтетическое) задания требуемого порядка сортировки.

Автор: skyboy 26.11.2007, 15:24
какая версия MySDL? Сходу в голову приходит использование http://dev.mysql.com/doc/refman/5.1/en/stored-procedures.html для этих целей.

Добавлено через 1 минуту и 21 секунду
Цитата(Akina @  26.11.2007,  14:17 Найти цитируемый пост)
Создайте поле (возможно, синтетическое)

мне показалось, что такое поле уже есть. просто автору охота "поменять местами" две записи: т.е. поменять местами значения этого синтетического поля. Одним запросом.

Автор: Chuck 26.11.2007, 22:44
Royan, не совсем понял, как это может мне пригодиться. Ваш метод подходит для того, чтобы поддерживать какую-то запись постоянно вверху листинга или внизу.

Akina, прошу прощения, а что такое синтетическое поле?

skyboy, Вы правы, именно это мне и нужно. У меня MySQL 5.0. Как сложно написать хранимую процедуру для реализации такого функционала?

Автор: skyboy 26.11.2007, 23:04
Цитата(Chuck @  26.11.2007,  21:44 Найти цитируемый пост)
Как сложно написать хранимую процедуру

абсолютно несложно. синтаксис создания ХП http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html

Автор: Akina 27.11.2007, 00:41
Цитата(Chuck @  26.11.2007,  23:44 Найти цитируемый пост)
что такое синтетическое поле?

Синтетическое, составное, которое составляется из кусочков других полей.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)