SQL查询按最新帖子排序组

时间:2012-02-11 20:03:34

标签: sql ruby-on-rails sorting

我正在创建一个rails 3应用程序。

它有团体(像社交团体与成员等等,成员可以在团体上发帖)。 所以我的模型是Group和Post,以及group has_many帖子(每个帖子(帖子)显然都有group_id)。

我想知道如何获取按最新帖子排序的群组列表,包括没有任何帖子的群组。

谢谢!

3 个答案:

答案 0 :(得分:1)

根据您拥有的列,它可能类似于

select g.group_id, g.group_name, max( p.post_date )
from   group g left join post p on g.group_id = p.group_id
group by g.group_id, g.group_name
order by max( p.post_date ) desc

答案 1 :(得分:0)

   Group.joins('LEFT OUTER JOIN posts ON groups.id = posts.group_id').order('posts.created_at desc').group('groups.id')

答案 2 :(得分:0)

对于任何想要在轨道3中寻找最终解决方案的人来说,它看起来像这样:

sorted_groups_ids = Group.joins("LEFT JOIN posts p ON groups.id = p.group_id").select("groups.id").group("groups.id").order("MAX(p.id) DESC").map(&:id) sorted_groups = Group.find(sorted_groups_ids).sort_by { |g| sorted_groups_ids.index(g.id) }

第二行是必要的,因为另一行找到打破以前的订单