我有一个名为vehicles
的表,它有一个列,分别称为vehicle_id
和price
。
我有一个名为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
您可以尝试使用子查询(它离您的解决方案很近,但您需要为带有select
的in
子句显式提供列名,否则将提供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')