Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Здравствуйте. Это сложный запрос, но может кто-то сможет помочь. Уже сломал голову.
Смысл такой: На сайте у каждого пользователя есть возможность лайкнуть пост. Т.е. если он нажмёт на кнопку, то в таблице Like появится новая запись с id лайкнутого поста.
Подскажите пожалуйста, как выбрать 3 записи (по столбцу alias таблицы Post) самых популярных (у которых в колонке post_id Like больше всего повторяющихся значений).
Post
id alias
1 Первая статья
2 Десятая статья
3 Двадцатая статья
4 Тридцатая статья
Like
id post_id
1 2
2 2
3 4
4 1
В примере выше, больше всего лайкали посты с id 2, 1, 4. В результате я должен получить в выборке 3 эти статьи по порядку убывания их частоты упоминания в столбце post_id:
1. Десятая статья -2 like
2. Первая статья -1 like
3. Тридцатая статья -1 like
Не в сети
Аналогичный случай, только имена другие
https://stackoverflow.com/a/40021201
А вообще, оптимально иметь поле с количеством лайков в самом посте. При лайке добавляешь запись и увеличиваешь счётчик в одной транзакции.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Спасибо вам огромное. Это должно сработать
Не в сети