@OptimusPrime5645

Как сделать sql запрос с несколькими категориями в выдаче и в нужно процентном соотношении?

У меня есть сайт с фильмами. Есть блок Рекомендуем. Я хочу вывести в этом блоке именно те фильмы которые связаны с интересами пользователя. Я собираю данные о том какие фильмы выбирает(кликает) пользователь и храню эти данные в бд.

В итоге через php pdo я вывожу все фильмы из бд. У каждого фильма есть Категория. После того как я собрал по всем фильмам данные я смотрю какая категория для этого пользователя более Популярная(набирает больше всего кликов).

Как мне при выводе сделать не 100% фильмов связанных с 1 категории, а разделить в процентном соотношении. При анализе фильмов которые выбирает пользователь я определяю какую категорию Больше всего выбрал пользователь, затем чуть меньше и еще меньше. И можно было бы в процентном соотношении вывести фильмы связанные с этими категориями.

Например, после недели того как пользователь пользовался нашим сайтом, он кликнул на 100 фильмов. Мы определили что: на 1 месте - из 100 фильмов 50 боевики; на 2 месте - из 100 фильмов 35 комедий;
на 3 месте - из 100 фильмов 15 фантастик;

В блоке Рекомендуем вам: Можно было бы вывести 50% фильмов с категории Боевик и тд.

Просто я знаю как вывести все связанное с одной категорией, а с несколькими как мне нужно, в нужно процентном соотношении никак не могу разобраться. Есть какие нибудь идеи?
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Выделяете все категории, которые будут значимыми для выборки, пропорционально количеству вычисляете процент, и делаете в бд ровно столько запросов, сколько категорий у вас получилось.

Например вы в итоге хотите показать 10 фильмов в ленте рекомендаций, 50% боевиков, 30% драма, 10% комедия и 10% научпоп. Делаете 4 отдельных запроса с соотвтетствующими лимитами на каждую категорию (5,3,1 и 1 соответственно), склеиваете полученные массивы - профит.

PS: Для того чтобы они потом не шли по порядку, а были худо-бедно в разброс, неплохо по итогу перед выводом сделать аррэй_шаффл.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы