Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / (MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику / 10 сообщений из 10, страница 1 из 1
13.09.2013, 11:55:53
    #38395783
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
Здрасте! Есть таблица с рекламой

(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

Если я на правильном пути, то как прописать все эти условия желательно одним запросом? (на вход могу передать текущее значение счетчика)
...
Рейтинг: 0 / 0
13.09.2013, 12:04:11
    #38395805
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
Код: sql
1.
ORDER BY (`SortPos` + Deviation) MOD MaxSortPos
...
Рейтинг: 0 / 0
13.09.2013, 12:20:28
    #38395846
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
Akina
Код: sql
1.
ORDER BY (`SortPos` + Deviation) MOD MaxSortPos


т.е.
SELECT * FROM advertising ORDER BY (`SortPos` + 1) MOD Max(SortPos)
чета не могу понять как MOD Max(SortPos) как тут работает и при таком запросе почему-то только одна запись выведется...
...
Рейтинг: 0 / 0
13.09.2013, 13:17:51
    #38395956
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
Код: sql
1.
2.
3.
4.
SELECT * 
FROM advertising 
ORDER BY (`SortPos`+1) MOD (SELECT Max(SortPos) 
                            FROM advertising);
...
Рейтинг: 0 / 0
13.09.2013, 13:25:50
    #38395973
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
Akina,

да чета не то все это, вот если 5 записей в таблице, и шаг = 1, то этот способ уже пропускать начинает
...
Рейтинг: 0 / 0
13.09.2013, 13:51:57
    #38396016
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
Нифига не понял. После 100показов надо изменить колонку порядка сортировки... нет? Причем тут select?!?

Делаем update, как Вы и описали: минимальному текущему присваиваем максимальный, остальные уменьшаем на 1... в чём проблема?

Код: sql
1.
2.
3.
4.
5.
6.
7.
UPDATE `advertising` AS a
JOIN (
  -- # Загоняем в переменные наименьший и наибольший номер сортировки:
  SELECT @max:=MAX(dummy.`sortpos`), @min:=MIN(dummy.`sortpos`) FROM `advertising` AS dummy
) AS m
SET a.`sortpos` = IF( a.`sortpos` = @min, @max, a.`sortpos` - 1)
;



запрос вызываем при наступлении условия кратности показов. Само условие можно проверять как на Мускуле в ХП, так и на клиенте. Запрос от счетчика не зависит никак. Выборку делаем одинаково, порядок измениться "как только - так сразу".
...
Рейтинг: 0 / 0
13.09.2013, 14:01:15
    #38396042
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
спасибо! буду юзать
...
Рейтинг: 0 / 0
13.09.2013, 14:02:54
    #38396049
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
join с update
...
Рейтинг: 0 / 0
13.09.2013, 14:23:37
    #38396091
однобитный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
ура!!!
...
Рейтинг: 0 / 0
13.09.2013, 18:39:08
    #38396427
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику
однобитный,

ну и славненько. С праздником!
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / (MySQL) Вывод данных в нужном порядке, со сдвигом по счетчику / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]