Автор Тема: Перемещение строк в таблице  (Прочитано 5415 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Перемещение строк в таблице
« : 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

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

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

спасибо за внимание :)
[off]Безработный[/off]

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
Перемещение строк в таблице
« Ответ #1 : 02 Сентября 2004, 11:08:51 »
>> или я мыслю не в том направлении?
Весьма вероятно... Объясни, зачем ты делаешь это, тогда станет понятно, помогать тебе с запросом или объяснять как делать правильно.
« Последнее редактирование: 02 Сентября 2004, 11:58:55 от tserbis »

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Перемещение строк в таблице
« Ответ #2 : 02 Сентября 2004, 11:50:03 »
строки в таблице не нужно никуда перемещать.
Если вы работаете с базой, как будто это примитивный текстовый файл, не научившись абстрагировать хранение данных от их вывода, то база данных вам и вовсе не нужна.

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Перемещение строк в таблице
« Ответ #3 : 02 Сентября 2004, 12:21:04 »
tserbis
У меня в таблице хранится статьи...
скрипт выводит текст на сайт мне нужно добавить в архив 2 -е статьи именно в том порядке в котором я исполняю запрос. Тоесть после 33 - ой статьи мне нужно добавить две статьи.

зарание спасибо.
 
RomikChef
А вы многоуважаемый по всей вероятности "ясновидящий" ;)
и вам спасибо.
[off]Безработный[/off]

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
Перемещение строк в таблице
« Ответ #4 : 02 Сентября 2004, 12:38:05 »
for_i_0
по-правильному, тебе нужно сделать в этой таблице отдельное поле, по которому ты будешь сортировать и редактируя которое сможешь менять порядок. А нумерация с MySQL вообще не связана, нумеровать статьи надо в PHP при выводе.

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Перемещение строк в таблице
« Ответ #5 : 02 Сентября 2004, 12:48:27 »
tserbis
[OFF]спасибо[/OFF]
[off]Безработный[/off]

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Перемещение строк в таблице
« Ответ #6 : 02 Сентября 2004, 13:22:56 »
tserbis
оно у него есть
другое дело, что он зачем-то сделал его уникальным индексом, а потом удивляется на дублирование ключей.

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
Перемещение строк в таблице
« Ответ #7 : 02 Сентября 2004, 13:34:30 »
Хм... Я подумал наоборот - раз уникальный, - значит это ID по смыслу.
Разберётся сам, думаю...

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Перемещение строк в таблице
« Ответ #8 : 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

благадарю за внимание ;)
[off]Безработный[/off]

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
Перемещение строк в таблице
« Ответ #9 : 02 Сентября 2004, 13:59:12 »
[OFF]Говорили-балакали - сіли та й заплакали.[/OFF]

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Перемещение строк в таблице
« Ответ #10 : 02 Сентября 2004, 14:00:33 »
Цитировать
он у меня уникальный

гы гы гы :-)

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
Перемещение строк в таблице
« Ответ #11 : 02 Сентября 2004, 14:14:36 »
for_i_0
Цитировать
и он у меня уникальный


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

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

[модераторам]
Может собрать, что-то похожее на FAQ в этом форуме???
[/модераторам]

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Перемещение строк в таблице
« Ответ #12 : 02 Сентября 2004, 14:34:50 »
Есть вот такой, не очень внятный, на мой взгляд: http://faq.phpclub.ru/id

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28