gpt4 book ai didi

ruby-on-rails - 获取子项总和(数量)小于父项(也是数量)的所有记录

转载 作者:数据小太阳 更新时间:2023-10-29 08:31:09 25 4
gpt4 key购买 nike

我正在尝试获取产品销售量之和小于产品数量的所有产品。

这是我尝试过的:

class Product < ActiveRecord::Base
has_many :sales

scope :available, lambda { where(sales.sum(:quantity) < quantity)}
end

但这给了我 undefined local variable or method `sales' for #<Class:0x007fd2f571ac58>我该如何解决这个问题?

最佳答案

表中特定字段的sum 是通过对SQL 语句中所需的行进行分组,然后对其应用聚合函数来获得的。

您的具体问题可能同样在 ActiveRecord 中被翻译:

Product.joins(:sales).
group("sales.product_id").
having("sum(sales.quantity) < sum(products.quantity)").
select("products.*")

您必须在此处使用 having 因为 where 不适用于聚合函数(又名 sumcount, avg 等)

关于ruby-on-rails - 获取子项总和(数量)小于父项(也是数量)的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33763853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com