|
|
|
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
|
|||
|---|---|---|---|
|
#18+
Здрасте! Есть таблица с рекламой (advertising) id p.k. - Ид link - Ссылка sortpos - Порядок сортировки Например: 1| http://site1.ru|1 2| http://site2.ru|2 3| http://site3.ru|3 Итого, порядок вывода: http://site1.ru, http://site2.ru, http://site3.ru Спустя 100 показов, должен произойти сдвиг и порядок вывода будет http://site2.ru, http://site3.ru, http://site1.ru Потом еще через 100 http://site3.ru, http://site1.ru, http://site2.ru и т.д. Собираюсь делать так... Запрос для вывода SELECT * FROM advertising ORDER BY sortpos DESC 1) Создаю отдельно счетчик показов 2) При каждом показе всех ссылок счетчик +1 3) Если счетчик / 100 без остатка, то первую запись sortpos = MAX(из всех sortpos), потом все sortpos, кроме первой уменьшаю на 1 Если я на правильном пути, то как прописать все эти условия желательно одним запросом? (на вход могу передать текущее значение счетчика) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 11:55:53 |
|
||
|
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 12:04:11 |
|
||
|
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
|
|||
|---|---|---|---|
|
#18+
Akina Код: sql 1. т.е. SELECT * FROM advertising ORDER BY (`SortPos` + 1) MOD Max(SortPos) чета не могу понять как MOD Max(SortPos) как тут работает и при таком запросе почему-то только одна запись выведется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 12:20:28 |
|
||
|
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 13:17:51 |
|
||
|
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
|
|||
|---|---|---|---|
|
#18+
Akina, да чета не то все это, вот если 5 записей в таблице, и шаг = 1, то этот способ уже пропускать начинает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 13:25:50 |
|
||
|
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
|
|||
|---|---|---|---|
|
#18+
Нифига не понял. После 100показов надо изменить колонку порядка сортировки... нет? Причем тут select?!? Делаем update, как Вы и описали: минимальному текущему присваиваем максимальный, остальные уменьшаем на 1... в чём проблема? Код: sql 1. 2. 3. 4. 5. 6. 7. запрос вызываем при наступлении условия кратности показов. Само условие можно проверять как на Мускуле в ХП, так и на клиенте. Запрос от счетчика не зависит никак. Выборку делаем одинаково, порядок измениться "как только - так сразу". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 13:51:57 |
|
||
|
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
|
|||
|---|---|---|---|
|
#18+
спасибо! буду юзать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 14:01:15 |
|
||
|
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
|
|||
|---|---|---|---|
|
#18+
join с update ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 14:02:54 |
|
||
|
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
|
|||
|---|---|---|---|
|
#18+
ура!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 14:23:37 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38395956&tid=1836053]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
59ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 349ms |

| 0 / 0 |
