从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
答案 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')
从上面的查询中你可以得到每天和产品数量和价格。