如何在Rails 3 Active Record Query中一起选择对象和计数?

时间:2011-06-25 01:43:32

标签: ruby-on-rails ruby-on-rails-3 activerecord active-relation

如何在有效查询中执行此类操作?

select product.*, count(product_id) AS product_counts
group by(product.*) 
order by product_counts;

我在主动查询中尝试了这个:

Product.select("product fields, count(product_id) AS product_counts").group("product fields").order(product_counts)

我得到的结果集仅包含按正确的计数顺序排序的产品,但没有计数值。我做了一个.to_sql,它返回正确的sql。

如果在db上有效率的话,我该怎么做呢?

另一个相关问题是,如何在有效查询中执行.select("product.*).group("product.*")?现在我必须列出每个字段,例如。 .group("product.id, product.name, product.price...etc")

1 个答案:

答案 0 :(得分:0)

@Kevin,

实际上你要回到product_counts唯一需要注意的是虚拟属性不会显示在控制台中,所以如果你有:

products = select product.*, count(product_id) AS product_counts
group by(product.*) 
order by product_counts;

#You can access the product_counts just as you would expect
products.first.product_counts

问题2: 不确定您要使用组(“product。*”)尝试实现的目标,如果您想获得不同的行,可以在选择中使用DISTINCT,例如Product.select(“DISTINCT *”)