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''的主要内容,如果未能解决你的问题,请参考以下文章