Я пытаюсь создать процедуру, которая выбирает объявления из базы данных по очереди. И в конечном итоге возвращает выбранную строку объявлений и увеличивает значение просмотров.
Часть, над которой я сейчас работаю, должна
- Извлечение результатов из таблицы объявлений. ГДЕ "город" соответствует данному городу, а "место" соответствует названию данного места.
- Добавить дополнительный столбец 'num', в котором перечислены результирующие строки.
- Из этих результатов выберите строку, в которой столбец 'num' соответствует SUM ('views')% COUNT (id)
Это должно позволить мне показывать объявления по очереди, пока я увеличиваю столбец просмотров, когда объявление окончательно выбрано и возвращено
Код, над которым я сейчас работаю, это ....
SET @t1=-1;
SELECT *
FROM (SELECT @t1 := @t1+1 AS num, ads.*
FROM ads
WHERE city = 'Maitland'
AND spot = 'home-banner'
ORDER BY id ASC) dt
WHERE dt.num = SUM(dt.views) % COUNT(dt.id);
... Однако у меня проблемы с функциями SUM и COUNT. Я получаю неправильное использование ошибки групповой функции. Я также пытался переместить функции внутрь подзапроса, но по какой-то причине это приводит к тому, что подзапрос возвращает только один результат.
Результаты подзапроса
num id spot city views
0 1 home-banner Maitland 0
1 2 home-banner Maitland 2
2 3 home-banner Maitland 0
3 4 home-banner Maitland 0
4 5 home-banner Maitland 0
5 6 home-banner Maitland 0