Расчет суммы на основе столбца из связанной модели - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть таблица с именем vehicles, в которой есть столбец с именами vehicle_id и price.

У меня есть таблица с именем sales, которая ссылается на таблицу vehicles.В нем есть столбцы vehicle_id (ссылается на таблицу vehicle) и sale_status, которые могут быть равны «продано» или «ссуде».

Я пытаюсь рассчитать общую стоимость vehicles, котораяравно «продано» в таблице sales.Помощь очень ценится!

Это то, что у меня есть, но она возвращает неправильный номер.

vehicle.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

1 Ответ

0 голосов
/ 02 декабря 2018

Вы можете попробовать с подзапросом (который близок к вашему решению, но вам нужно явно указать имя столбца для предложения in с select, в противном случае будет предоставлен столбец 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')
...