Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2013, 15:17   #1
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию Сложный запрос на обновление записей

Здравствуйте!

У меня такой вопрос.

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

id name ref cell /*названия полей. id и cell - ключевые поля*/

1 login1 0 1
2 login2 3 2
3 login3 2 3

Теперь вопрос:

Можно ли выполнить такой запрос на обновление записей, чтобы номера в поле cell изменились в соответствии с сортировкой по полю ref. То есть чтобы таблица после запроса стала такой

id name ref cell /*названия полей. id и cell - ключевые поля*/

1 login1 0 3
2 login2 3 1
3 login3 2 2

То есть у кого самое большое значение в поле ref, тот получает 1 в поле cell, кто поменьше - тот 2, и.т.д. А если значения в ref одинаковые, то номера в cell будут в порядке возрастания. Поле cell уникальное.

В MySQL не силён, поэтому извините, если вопрос глупый.

В цикле я бы это сделал просто, путём вытаскивания всех записей, сортировкой их по полю cell, и дальнейшим присваиванием порядковых номеров в цикле. Но цикл тут не подойдёт, так как записей будет десятки тысяч, и столько раз обращаться к базе хостер не даст.
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru

Последний раз редактировалось grominfo; 15.07.2013 в 15:19.
grominfo вне форума Ответить с цитированием
Старый 19.07.2013, 12:24   #2
xen
Пользователь
 
Регистрация: 13.03.2007
Сообщений: 45
По умолчанию

Как вариант можно использовать триггер на вставку записи, в доках mysql про них норм написано
xen вне форума Ответить с цитированием
Старый 19.07.2013, 14:42   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
update t0 set cell = ( select count(*) from t0 as tx 
                              where  t0.xxx=tx.xxx //если в таблице д.быть несколько групп нумерации (для выбора одной такой группы)
                                 and  tx.ref>=t0.ref )
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не сложный запрос -=Andriushka=- SQL, базы данных 0 03.05.2013 20:26
сложный запрос Deeller БД в Delphi 3 29.04.2011 19:25
Сложный запрос templton Microsoft Office Access 8 21.04.2011 13:43
Сложный запрос nikolai_P SQL, базы данных 2 01.04.2010 01:21
Сложный запрос Lianchik Помощь студентам 1 01.03.2010 17:16