我有一个具有以下结构的rails应用程序:一个经销商可以有许多汽车,而这些汽车又可以有许多不同的促销(car_promotions是一个将促销链接到汽车本身的表)。
我尝试做的是为每个经销商,获得他们目前拥有的每个不同car_promotion的数量的计数。例如,如果有一项名为“5折优惠”的促销活动和一项名为“免费送货”的促销活动,它将对第一次促销的汽车数量和第二次促销的汽车数量进行罚款。
Dealer.rb:
has_many :cars, :promotionsCar.rb:
has_many :car_promotions
attr_accessor :dealer_idCarPromotion.rb:
belongs_to :car, :promotion.rb
attr_accessor :car_id, :promotion_idPromotion.rb
belongs_to :dealer目前我正在做的是连接汽车和car_promotions模型,然后对于经销商在他们的数据库中的每个促销,循环通过它们,并获得我的连接中涉及促销的行数。这是有效的,但它真的很慢,所以我想知道如何优化它(使用rails查询或mysql查询)。我的sql查询写得不是很好,所以我遇到了一些问题,让它正常工作。
我也尝试在我的joins上使用group_by,但我不确定如何工作,因为如果我直接在joins上做group_by,它没有对promotion_id的引用。
有什么想法吗?谢谢,
发布于 2015-04-27 04:58:09
一旦超过两个表,我发现编写原始SQL通常会更容易。这可能会完成您想要的操作:
SELECT COUNT(cp.id), d.id
FROM car_promotians cp
INNER JOIN cars c ON cp.car_id = c.id
INNER JOIN dealers d ON c.dealer_id = d.id
GROUP BY d.id通过ActiveRecord获得高效的SQL查询可能是可能的。如果你发布你的数据库模式,别人可能会更容易帮助你。
https://stackoverflow.com/questions/29881770
复制相似问题