繁体   English   中英

Ruby on Rails如何处理“按类别从产品组中选择count(*)”?

[英]How does Ruby on Rails handle “Select count(*) from products group by category”?

说是否存在带有字段的表

Products
--------
ID
CategoryID
Name
Price
  ... etc

Ruby on Rails如何提供返回的表

select count(*) from products group by categoryID

该显示每个类别中有多少个产品? 与作为Product对象数组的Products.find(:all)相比,结果如何?

作为更高级的操作,

select count(*) from products p inner join category c on p.categoryID = c.ID 
  group by categoryID

select average(price) from products p inner join category c on p.categoryID = c.ID 
  group by categoryID

您可能想签出ActiveRecord::Calculations模块(我相信它可以完成大部分要求):

http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html

一些例子:

计数:

Product.group(:category_id).count

平均:

Product.joins(:category).group(:category_id).average(:price)

那些应该有望使您走上正确的道路。 不过,一定要检查链接的文档,因为它非常有用。

您是在询问幕后发生的情况还是结果是什么样? 如果是后者,那就学习爱控制台吧! 您可以轻松地自己找到:

$ script/console
Loading development environment (Rails 2.3.8)

>> Product.count
=> 229697

>> Product.count(:group => :category_id)
=> #<OrderedHash {27=>5588, 33=>41, 28=>156, 34=>22, 23=>15209, 1=>115357, 
     29=>109, 24=>68, 2=>14434, 25=>78576, 31=>85, 26=>4, 32=>48}>

如您所见,它为您提供了一个有序的哈希映射category_ids到这些类别的计数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM