@kirill-93

MySQL. Как сгруппировать данные по 2 полям?

Помогите сгруппировать результат выборки. Posts - посты, Entities - авторы постов, Users - пользователи. Задача выбрать посты за определенный промежуток и отсортировать по количеству просмотров, и чтобы в выборке не было повторяющихся новостей и авторов.
select count('post_user.id') as total, `posts`.entity_id
from `posts` 
left join `post_user` on `post_user`.`post_id` = `posts`.`id` and `post_user`.`created_at` >= '2016-08-22' and `post_user`.`created_at` < '2016-08-29'
join entities on entities.id = posts.entity_id 
where `post_type` = 'youtube' and entities.type = 1
group by posts.id, entities.id
order by `total` desc 
limit 20

Этот запрос группирует по posts.id, то есть повты не повторяются, но не группирует по entities.id. Почему?
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ответы на вопрос 1
idShura
@idShura
не группирует по entities.id. Почему?


Мне кажется ты не понимаеш как работает group by.
group by используется для того, чтобы объединять повторяющиеся значения в группы. В запросе ты указываешь group by posts.id, entities.id т.е. сначала группировка происходит по полую posts.id, а затем полученные группы делятся по полю entities.id

Покажи какую информацию выдает твой запрос.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы