SQL-запрос для предоставления максимально интересного контента пользователю
Есть структура следующая таблиц.
Для публикаций:
posts - публикации
post_complaints - жалобы на посты
post_follows - посты, за которыми следит пользователь
post_history - история просмотров постов
post_likes - лайки к постам
post_shares - шейринг постов
Для комментариев:
comments - комментарии
Для групп:
groups - сами группы (они же интересы, которые выбирает пользователь при регистрации)
group_user - в каких группах состоит пользователь
Для пользователей:
followers - кто с кем дружит
Взаимосвязи следующие:
1. посты - пользователи
2. комментарий - пост - пользователь
3. фолловинг - пользователи
4. пользователь - группы
Необходимо написать запрос(-ы), который(-ые) будут удовлетворять следующие условия:
1. Исходя из интересов (групп) первые посты выдаются максимально близкие по тематике от других пользователей с сортировкой по ранкам (количество просмотров, лайков, комментариев);
2. Просмотренные посты не должны выдаваться в ленту (исключающая таблица - post_history);
3. Если схожих по интересам постов нет, то выдавать максимально топовые записи (по количеству комментариев, лайков)
Все публикации необходимо искать по временному промежутку.
Предлагайте сроки и стоимость реализации.