Forum Webscript.Ru

Общие => Базы данных => Тема начата: for_i_0 от 02 Сентября 2004, 10:44:03

Название: Перемещение строк в таблице
Отправлено: for_i_0 от 02 Сентября 2004, 10:44:03
Здравствуйте, уважаемые !
проблема такая -> при исполнении запроса:

UPDATE some_tbl SET num = (num+2) WHERE num <= 101 AND num >33

выводится следующая ошибка:
Duplicate entry \'36\' for key 1

на сколько я понимаю он исполняется в следующем порядке 34+2...101+2

и естественно выдается ошибка.

Можно ли изменить пордок исполнения запроса ?
или я мыслю не в том направлении ?

спасибо за внимание :)
Название: Перемещение строк в таблице
Отправлено: tserbis от 02 Сентября 2004, 11:08:51
>> или я мыслю не в том направлении?
Весьма вероятно... Объясни, зачем ты делаешь это, тогда станет понятно, помогать тебе с запросом или объяснять как делать правильно.
Название: Перемещение строк в таблице
Отправлено: Меняздесьдавнонет от 02 Сентября 2004, 11:50:03
строки в таблице не нужно никуда перемещать.
Если вы работаете с базой, как будто это примитивный текстовый файл, не научившись абстрагировать хранение данных от их вывода, то база данных вам и вовсе не нужна.
Название: Перемещение строк в таблице
Отправлено: for_i_0 от 02 Сентября 2004, 12:21:04
tserbis
У меня в таблице хранится статьи...
скрипт выводит текст на сайт мне нужно добавить в архив 2 -е статьи именно в том порядке в котором я исполняю запрос. Тоесть после 33 - ой статьи мне нужно добавить две статьи.

зарание спасибо.
 
RomikChef
А вы многоуважаемый по всей вероятности "ясновидящий" ;)
и вам спасибо.
Название: Перемещение строк в таблице
Отправлено: tserbis от 02 Сентября 2004, 12:38:05
for_i_0
по-правильному, тебе нужно сделать в этой таблице отдельное поле, по которому ты будешь сортировать и редактируя которое сможешь менять порядок. А нумерация с MySQL вообще не связана, нумеровать статьи надо в PHP при выводе.
Название: Перемещение строк в таблице
Отправлено: for_i_0 от 02 Сентября 2004, 12:48:27
tserbis
[OFF]спасибо[/OFF]
Название: Перемещение строк в таблице
Отправлено: Меняздесьдавнонет от 02 Сентября 2004, 13:22:56
tserbis
оно у него есть
другое дело, что он зачем-то сделал его уникальным индексом, а потом удивляется на дублирование ключей.
Название: Перемещение строк в таблице
Отправлено: tserbis от 02 Сентября 2004, 13:34:30
Хм... Я подумал наоборот - раз уникальный, - значит это ID по смыслу.
Разберётся сам, думаю...
Название: Перемещение строк в таблице
Отправлено: for_i_0 от 02 Сентября 2004, 13:52:02
RomikChef
Как сказал tserbis оно и есть по смыслу ID и он у меня уникальный

Цитировать
RomikChef:
а потом удивляется на дублирование ключей.


Цитировать
for_i_0:
на сколько я понимаю он исполняется в следующем порядке 34+2...
101+2
и естественно выдается ошибка.


А разобрался я следующим путем:
UPDATE some_tbl SET num = (num+100) WHERE num <= 101 AND num >33

UPDATE some_tbl SET num = (num-98) WHERE num <= 201 AND num >135

благадарю за внимание ;)
Название: Перемещение строк в таблице
Отправлено: tserbis от 02 Сентября 2004, 13:59:12
[OFF]Говорили-балакали - сіли та й заплакали.[/OFF]
Название: Перемещение строк в таблице
Отправлено: Меняздесьдавнонет от 02 Сентября 2004, 14:00:33
Цитировать
он у меня уникальный

гы гы гы :-)
Название: Перемещение строк в таблице
Отправлено: Phoinix от 02 Сентября 2004, 14:14:36
for_i_0
Цитировать
и он у меня уникальный


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

Почитай перед ответом последние 10 тем этого форума, в 80% из них людям "вдалбливается" что ID менять ненужно, даже нельзя, и там же почитай почему...

[модераторам]
Может собрать, что-то похожее на FAQ в этом форуме???
[/модераторам]
Название: Перемещение строк в таблице
Отправлено: Меняздесьдавнонет от 02 Сентября 2004, 14:34:50
Есть вот такой, не очень внятный, на мой взгляд: http://faq.phpclub.ru/id

Я пишу, но медленно.
До инкремента еще не добрался.
И... к тому же, щас убедишься - клиент из тех, кто непоколебимо уверен в собственной гениальности. Таким факи не помогают.