Как посчитать самый популярный элемент в таблице через join таблицу?
Есть модель комментарий, и модель хэштег, связанные связью «many to many», через join таблицу comments_hashtags с ключами comment_id и hashtag_id.
Как посчитать самый популярный хештег? те тот которого больше всего? Возможно ли это сделать более или менее штатными средствами active record'a? Заранее спасибо!
Ну вообще, должен возвращать id хэштега, если в той таблице у вас правильно колонки названы. :) Т.е. в запросе мы чего делаем. Берем вашу таблицу, где список коммент-хэштег, группируем по одинаковым хэштегам и выводим число каждого. Сортируем по возрастанию и выводим 1. О комментах тут вообще речи не идет.
ActiveRecord::Base.connection.execute(%q{select * from (select hashtag_id, count(*) as cnt from comments_hashtags group by hashtag_id order by cnt DESC) as foo})
а нет вру, во первых он хочет алиас обезательно (as), его я добавил, но теперь не работает row_num(забыл его дописать сначала). Причем как-то странно не работает, вроде все по докам