rails 3条件和日期范围内的计算

时间:2014-05-25 00:07:55

标签: ruby-on-rails-3.2 multiple-conditions

从date_start查询到date_end,我需要验证每个日期给定产品的可用数量是否达到阈值。

@inventories = Inventory.where(['product_id IN (?) AND date_available >= ? AND date_available <= ? AND quantity >= ?', @products, @date_start, @date_end, params[:quantity]]).all

此查询生成符合任何给定日期标准的库存。但是,对于给定的产品,在每个日期都需要满足这些条件。因此,

@products = @inventories.map(&:product).uniq

Q1 我现在如何推断所有available_products(即每个日期的数量&gt; =?)和

Q2 我需要对每个available_product的每个日期的价格求和,以便按价格对视图进行排序

*编辑*

鉴于建议的答案,我认为提供示例数据以进一步澄清可能是明智之举 product_id date_available quantity price_1 price_2
 1 ---- 2014-05-27 ---- 3 ---- 35 ---- 60
 1 ---- 2014-05-28 ---- 3 ---- 35 ---- 60
 1 ---- 2014-05-29 ---- 3 ---- 25 ---- 50

2 ---- 2014-05-27 ---- 3 ---- 35 ---- 60
 2 ---- 2014-05-28 ---- 1 ---- 35 ---- 60
 2 ---- 2014-05-29 ---- 3 ---- 35 ---- 60

3 ---- 2014-05-27 ---- 3 ---- 30 ---- 55
 3 ---- 2014-05-28 ---- 3 ---- 30 ---- 55
 3 ---- 2014-05-29 ---- 3 ---- 30 ---- 55

@price =连接'price_1'和参数[:数量]

如果搜索参数是2014-05-27..2014-05-29,数量= 2
我应该生成
  产品3,​​价格= 165
  产品1,价格170
产品2失败,因为在其中一个日期没有达到阈值。

context:rails 3.2.17,postgresql,ruby 1.9.3

1 个答案:

答案 0 :(得分:0)

您可以在此处找到查询

@inventories = Inventory.where(['product_id IN (?) AND date_available >= ? AND date_available <= ? AND quantity >= ?', @products, @date_start, @date_end, params[:quantity]]).select("date_available as date, product as product, sum(quantity) as quantity, sum(price) as price")).group('date, product').order('price')

从上面的查询中你可以得到每天和产品数量和价格。