根据关联模型中的列计算SUM



我有一个名为vehicles的表,它有一个列,分别称为vehicle_idprice

我有一个名为sales的表,它引用了vehicles表。它有列vehicle_id(引用vehicle表(和sale_status,它们可以等于"已售出"或"贷款"。

我正在计算vehicles的总价,它等于sales表中的"已售出"。非常感谢您的帮助!

这是我目前所拥有的,但它返回了错误的数字。

车辆.rb :

def self.vehicles_price_sum
vehicles_sold.sum(:price).to_f
end
def self.vehicles_sold
Vehicle.where(id: Sale.where(sale_status: 'Sold'))
end

您可以尝试使用子查询(它离您的解决方案很近,但您需要为带有selectin子句显式提供列名,否则将提供sales'id列(:

Vehicle.where(id: Sale.where(status: "Sold").select(:vehicle_id)).sum(:price)
# SELECT SUM(`vehicles`.`price`) FROM `vehicles` WHERE `vehicles`.`id` IN (SELECT `sales`.`vehicle_id` FROM `sales` WHERE `sales`.`sale_status` = 'Sold')

最新更新