【问题标题】:rails 3 conditions and calculations across date rangerails 3 跨日期范围的条件和计算
【发布时间】:2014-05-25 00:07:54
【问题描述】:

查询从 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(即每个日期的数量 >= ?)和

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

*编辑 *

鉴于建议的答案,我认为提供示例数据以进一步澄清可能是明智的 product_iddate_availablequantityprice_1price_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' 和 params[:quantity] 的串联

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

上下文:rails 3.2.17、postgresql、ruby 1.9.3

【问题讨论】:

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


    【解决方案1】:

    在这里你可以找到查询,

    @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')
    

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

    【讨论】:

    • 我的问题可能不完整,所以我已经详细说明了上面的示例。但是数量不应该相加,需要为每条记录定义阈值。我也不确定你为什么建议按日期分组......
    猜你喜欢
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多