Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как пересчитать доп. поле?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): [1] 2 3 »   

> Без описания
lamozavrik
Отправлено: 22 Февраля, 2012 - 10:52:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




Привет всем. Помогите с одной штукой. В таблице есть доп поле с номером записи (это не id), номера идут по порядку, то есть 1, 2, 3, 4... Но если удалить, например, вторую запись, то получится 1, 3, 4... Так вот, как при удалении пересчитать это поле, что бы опять шло по порядку? =)


-----
Ударим крепким сном по мукам совести!
 
 Top
illy
Отправлено: 22 Февраля, 2012 - 11:05:27
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


Помог: 28 раз(а)




при удалении 2 все записи больше 2 уменьшаем на единицу

(Отредактировано автором: 22 Февраля, 2012 - 11:05:39)



-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
Viper
Отправлено: 22 Февраля, 2012 - 11:08:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




illyзаписи не больше 2, а записи больше номера удаляемой премнумеровываем заново.
Проще в цикле сделать выборку записей с номерами больше удаляемой и сделать им update. Правда если записей много, то могут возникнуть проблемы с блокировкой(лимит кол-ва запросов) и медленностью.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
lamozavrik
Отправлено: 22 Февраля, 2012 - 11:15:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




А более изящней решения я так понимаю нету? %)


-----
Ударим крепким сном по мукам совести!
 
 Top
LIME
Отправлено: 22 Февраля, 2012 - 11:19:37
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




а зачем их вообще нумеровать в базе?
может это проще делать при выводе?
 
 Top
lamozavrik
Отправлено: 22 Февраля, 2012 - 11:27:36
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




LIME пишет:
а зачем их вообще нумеровать в базе?
может это проще делать при выводе?

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


-----
Ударим крепким сном по мукам совести!
 
 Top
LIME
Отправлено: 22 Февраля, 2012 - 11:31:08
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




lamozavrik пишет:
По ним иногда проходит выборка
чую что можно обойтись в выборке без них))
например выбрать с нужной сортировкой и сикнуть указатель на нужную позицию и фетчить нужное кол-во записей
 
 Top
lamozavrik
Отправлено: 22 Февраля, 2012 - 11:53:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




LIME пишет:
чую что можно обойтись в выборке без них))

Вообще то можно =) Просто выборка выбирает 9 рандомных записей...Когда числа идут по порядку без пропусков, а не так как id, то отпадает вероятность выбора пустой строки или повторяющейся строки =)


-----
Ударим крепким сном по мукам совести!
 
 Top
EuGen Администратор
Отправлено: 22 Февраля, 2012 - 12:00:44
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
lamozavrik
Отправлено: 22 Февраля, 2012 - 12:08:13
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




EuGen, я это уже читал... В первом варианте есть вероятность повторения строки, а во втором запрос проходит по условию WHERE RAND()..., что не есть гуд (по моему) =))


-----
Ударим крепким сном по мукам совести!
 
 Top
LIME
Отправлено: 22 Февраля, 2012 - 12:13:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




чет ляпнул

(Отредактировано автором: 22 Февраля, 2012 - 12:15:42)

 
 Top
lamozavrik
Отправлено: 22 Февраля, 2012 - 12:19:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




LIME пишет:
чет ляпнул

Что ляпнул? ))


-----
Ударим крепким сном по мукам совести!
 
 Top
Symby
Отправлено: 22 Февраля, 2012 - 12:23:28
Post Id



Гость


Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2012  
Откуда: Пермь


Помог: 1 раз(а)




LIME пишет:
сикнуть указатель на нужную позицию

Насчет этого можно поподробнее? Как указать указатель на нужную позицию?


-----
Пишу немного о электронной музыке > http://techno-arena[dot]ru
 
 Top
LIME
Отправлено: 22 Февраля, 2012 - 12:26:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ну не думаю что правильное решение но всеже
http://php.su/functions/?mysql_data_seek на рандомный ряд
всеравно сервер бд не шлет весь результат целиком клиенту
так что может подойдет
 
 Top
lamozavrik
Отправлено: 22 Февраля, 2012 - 12:45:45
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




Вообщем алгоритм должен быть таким:
1. Я выбираю минимальное число и максимальное число с того столбца с числами
2. Генерю девять случайных чисел от минимального до максимально (как раз тут и нужно, что бы числа шли по порядку и не было пропусков между ними)
3. Далее составляю строку из чисел вида: число1, число2, число3...
4. Делаю выборку по условию WHERE столбец_с_числами IN (составленная строка)

Как то вот так ))


-----
Ударим крепким сном по мукам совести!
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB