предвижение записи на позицию вверх/вниз

noindex

Новичок
предвижение записи на позицию вверх/вниз

Категорически всех приветствую!

Столкнулся вчера с одной, казалось бы типовой задачей, но до сих пор решить её не смог.

Есть таблица, id идут не по порядку.

##########
# id # text #
##########
| 12 | превед |
| 34 | медвед |
| 45 | кагдила |

Нужно запись с id 45 передвинуть на одну позицию вверх, что бы 34 оказалась под ней.

Вот так:

##########
# id # text #
##########
| 12 | превед |
| 34 | кагдила |
| 45 | медвед |

Проще говоря, нужно что бы записи обменялись значениями id.

Как ?

Заранее благодарен!
 

Фанат

oncle terrible
Команда форума
никак.
id - это не поле для упорядочивания. Если кто до сих пор вдруг этого ещё не понял.

если тебе нужно "двигать вверх-вниз", то заведи поле для таких телодивжений, и двигай сколько влезет. простым апдейтом.

-~{}~ 17.10.06 10:12:

А указывать в запросе, какую именно строку надо апдейтить - как раз с помощью УНИКАЛЬНОГО ИДЕНТИФИКАТОРА.
 

noindex

Новичок
Автор оригинала: Фанат
никак.
id - это не поле для упорядочивания. Если кто до сих пор вдруг этого ещё не понял.

если тебе нужно "двигать вверх-вниз", то заведи поле для таких телодивжений, и двигай сколько влезет. простым апдейтом.
Фанат , я предвидел такой ответ :)

Ок.
Делаем такую таблицу

##############
# id # order # text #
##############
| 12 | 11 | превед |
| 34 | 22 | медвед |
| 45 | 54 | кагдила |

Как её сделать такой

##############
# id # order # text #
##############
| 12 | 11 | превед |
| 45 | 22 | кагдила |
| 34 | 54 | медвед |
 

Фанат

oncle terrible
Команда форума
если ты предвидел такой ответ, то и не надо было вообще задавать такой вопрос.

следующий мой ответ ты тоже предвидел, великий провидец.
В мануале смотришь синтаксис запроса update

-~{}~ 17.10.06 10:18:

и поправь свой дурацкий пример
 

noindex

Новичок
Автор оригинала: Фанат
если ты предвидел такой ответ, то и не надо было вообще задавать такой вопрос.

следующий мой ответ ты тоже предвидел, великий провидец.
В мануале смотришь синтаксис запроса update

-~{}~ 17.10.06 10:18:

и поправь свой дурацкий пример
Фанат совершенно верно, и следующий ответ предвидел :)
И дело не в провидце, а в предсказуемости, ну да ладно.

С синтаксисом update знаком, но увы..., как я уже говорил, я не провидец, и если в мануале нет ничего близко похожего на то, что мне нужно, то можно не медитировать.

Что не так с примером ?
Проверил, все ок.
 

Фанат

oncle terrible
Команда форума
в мануале не обязаны описывать все случаи всезх запросов, которые встречаются в практике всех программистов.

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

Что не так с примером ?
Проверил, все ок.
втыкай, в каких колонках ты порядок поменял, тормоз.
а в каких надо было.

-~{}~ 17.10.06 10:51:

блин, я в таких случаях всегда фигею.
ПОМЕНЯТЬ НОСКИ В ДВУХ ЯЩИКАХ КОМОДА ДЛЯ ЭТОГО ЧЕЛОВЕКА - НЕ ПРОБЛЕМА.
белые положить из верхнего в нижний, а чёрные - из нижнего в верхний.
Ведь задача - примитивная. Только дебил не справится.

но ТОЧНО ТАКАЯ ЖЕ ЗАДАЧА, только в программировании - превращается в ужасную трудность с привлечением посторонних усилий.

ну почему нельзя столь примитивный алгоритм продумать самому?
почему надо обязательно искать готовое решение в мануале или на форуме???
почему примитивная житейская задача становится таким непреодолимым препятствием?
кто-нибудь мне объяснит?
 

noindex

Новичок
Автор оригинала: Фанат
человек, который называет себя программистом, должен сам сообразить, как написать два два селекта и два апдейта, чтобы в двух строках поменялись значения.
Интересно, а ты себя называешь программистом или как ? :)

Если да, то и напиши эти 2 селекта и 2 апдейта.

По моему логично, что даже называющий себя программистом человек, может задавать вопросы, которые отцам покажутся глупыми.


втыкай, в каких колонках ты порядок поменял, тормоз.
а в каких надо было.
[/QUOTE]
не в каких, а в какой, эрудит ты наш :)

В колонке ордер естественно.
 

Фанат

oncle terrible
Команда форума
В колонке ордер естественно.
не имеет смысла разговаривать с человеком, который в упор не видит то, во что его два раза носом ткнули.

Сегоднй не твой день, noindex. приходи в другой раз.

-~{}~ 17.10.06 11:09:

ну ладно, так и быть.
допустим, ты вторую таблицу уже нарисовал с сортировкой.
Ну и какие проблемы у тебя с двумя селектами и двумя апдейтами?
проблема вытащить по уникальному индексу из двух строк значения ордер?
то есть, ты не в состоянии написать запрос виде селект ордер фром табле вхере ид=нужное?
или аналогичный запрос типа апдейт ставит тебя в тупик?
 

noindex

Новичок
Фанат

id записи, которую двигаем = 34.

Вопрос в том, какой id у вышестоящей записи.
Как его узнать ?

Если я его узнаю, то вопросов больше не возникает.
 

Фанат

oncle terrible
Команда форума
во-первых. ты. говорил. о том. чтобы. поменять. две. записи. местами.
то есть. у тебя. эти. две. записи. есть.
по-русски. это. означает. что ничего. узнавать. не нужно.

во-вторых.
запрос вида селект ид фром табле вхере ордер больше нужного лимит 1 тебе тоже неподвластен?
 

noindex

Новичок
Автор оригинала: Фанат
во-первых. ты. говорил. о том. чтобы. поменять. две. записи. местами.
то есть. у тебя. эти. две. записи. есть.
по-русски. это. означает. что ничего. узнавать. не нужно.
Не совсем так.
У меня есть 2 записи, но я знаю только id записи которую буду двигать.

ордер больше нужного лимит 1 тебе тоже неподвластен?
Вот за это спасибо, то что нужно!:)

Я чувствовал что лимитом нужно работать, но не сообразил про больше/меньше...

Спасибо Фанат!
 

camka

не самка
ордер, больше нужного - неправильно
максимальный ордер, меньше нужного - правильно
 

noindex

Новичок
Автор оригинала: camka
ордер, больше нужного - неправильно
максимальный ордер, меньше нужного - правильно
Ну я осознал что нужно сортировку поюзывать...
PHP:
SELECT id, my_order FROM table WHERE my_order > '3' ORDER BY my_order ASC limit 1
 
Сверху