Rails 3中的多个SUM语句或子查询,可能使用范围。任何人?

时间:2011-01-17 21:21:59

标签: sql ruby-on-rails-3 scope subquery sum

对于像

这样的rails 3类
class Item < ActiveRecord::Base
  has_many :production_runs
  has_many :deliveries
end

其中生产运行和交付都具有该特定生产或交付中的项目数量的属性“数量”。

我想查询项目(可能使用范围?)将两个表中的数量Sum()添加到结果中。类似的东西:

select items.*, (select SUM(production_runs.quantity) as runs from production_runs where production_runs.item_id = 42), (select SUM(deliveries.quantity) as dels from deliveries where deliveries.item_id = 42) from items where items.id = 42;

这为单个项目提供了正确的结果,但我想以某种方式将这些总和推送到更一般的查询中。

我尝试了各种为Item和ProductionRun和Delivery类添加范围而没有运气。使用范围会很好,因为我可以根据需要将其与其他条件链接起来,但实际上我对任何比仅查找项目然后迭代更优化的通用解决方案感到满意。

任何人都知道最好的方法吗?

由于

1 个答案:

答案 0 :(得分:0)

scope :sum_column_name, lambda{
    sum("column name")}

应该有效