Ruby on Rails查询

时间:2011-08-05 05:18:00

标签: sql ruby-on-rails

我正在尝试为我正在构建的个人网站撰写查询,用户可以在其中发布并评价其他人的意见。关于评级意见,我有这个意见,所以用户可以向上或向下评价意见,然后我想显示两个单独的页面,评论意见和评级最低的顺序。

OpinionsRatings之间存在多对多关系。它们通过名为OpinionRatings的表格连接在一起。

我为该页面撰写了一个查询,其中包含以下评论意见:

@topUpRatings = Rating.find(
  :all,
  :select => "opinion_ratings.opinion_id, opinion_ratings.account_id",
  :joins => "inner join opinion_ratings on ratings.id=opinion_ratings.rating_id",
  :conditions => ["ratings.up=?", true]
)

这将返回每个意见ID和帐户ID,我将用它来执行其他查询以显示意见和发布它的用户。

我遇到的问题是,我无法找到一种方法来按照计数来对意见进行排序(如果这是有意义的话)。

我知道有count(*)和group by,但我似乎无法弄清楚如何将其整合到一个按语句排列。

我一直在考虑子查询,但这些只能在select,from和where中使用。

任何帮助将不胜感激。如果您需要更多信息,请询问。

1 个答案:

答案 0 :(得分:0)

@topUpRatings = Rating.find(
  :all,
  :select     => "opinion_ratings.opinion_id, count(opinion_ratings.account_id)",
  :joins      => "inner join opinion_ratings on ratings.id=opinion_ratings.rating_id",
  :conditions => ["ratings.up=?", true]
  :group_by   => "opinion_ratings.opinion_id"
  :order_by   => "count(opinion_ratings.account_id) DESC"
)

我不确定语法,但试图了解这个想法。