2

如何在活动查询中执行此类操作?

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。

如何在数据库上高效的同时执行此操作或类似操作?

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

4

1 回答 1

0

@凯文,

实际上你正在取回 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:不确定你想用 group("product.*") 实现什么,如果你想获得不同的行,你可以在你的选择中使用 DISTINCT,例如 Product.select("DISTINCT *")

于 2011-12-21T04:31:23.367 回答