Rails查询'join'和'sum''

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails查询'join'和'sum''相关的知识,希望对你有一定的参考价值。

我的模型Grain_input带有“weight_fact”字段

class GrainInput < ApplicationRecord
  has_many :movements, as: :sourceable    
end

和模型运动与“金额”字段

class Movement < ApplicationRecord
  belongs_to :sourceable, polymorphic: true
  belongs_to :targetable, polymorphic: true
end

grain_input有很多动作。例如,grain_input的一部分从存储到设备,其他部分在其他地方。我需要得到所有仍存在于存储中的grain_input。范围:

      scope :at_storage, -> { 
            joins(:movements).
            group("grain_inputs.id").
            having("sum(movements.amount) < grain_inputs.weight_fact") }

此范围有效,但仅返回具有移动的grain_inputs。但是我需要grain_inputs,它也没有动作。

请帮助确定范围。

答案

你可以尝试左连接

      scope :at_storage, -> { 
        joins("LEFT JOIN `movements` ON movements.grain_input_id = grain_inputs.id" ).
        group("grain_inputs.id").
        having("sum(movements.amount) < grain_inputs.weight_fact") }

以上是关于Rails查询'join'和'sum''的主要内容,如果未能解决你的问题,请参考以下文章

SqlServer分布式跨数据库查询Join

前端模糊查询(搜索)

c# Linq left join 多个条件连接查询

在SQL联表查询的时候,in和inner join各有啥优点?

ThinkPHP数据多条件查询代码问题?

JOIN在rails上查询ruby