首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接多个表时获取计数的Rails/MySQL查询

连接多个表时获取计数的Rails/MySQL查询
EN

Stack Overflow用户
提问于 2015-04-27 02:32:10
回答 1查看 358关注 0票数 0

我有一个具有以下结构的rails应用程序:一个经销商可以有许多汽车,而这些汽车又可以有许多不同的促销(car_promotions是一个将促销链接到汽车本身的表)。

我尝试做的是为每个经销商,获得他们目前拥有的每个不同car_promotion的数量的计数。例如,如果有一项名为“5折优惠”的促销活动和一项名为“免费送货”的促销活动,它将对第一次促销的汽车数量和第二次促销的汽车数量进行罚款。

Dealer.rb:

代码语言:javascript
复制
has_many :cars, :promotions

Car.rb:

代码语言:javascript
复制
has_many :car_promotions
attr_accessor :dealer_id

CarPromotion.rb:

代码语言:javascript
复制
belongs_to :car, :promotion.rb
attr_accessor :car_id, :promotion_id

Promotion.rb

代码语言:javascript
复制
belongs_to :dealer

目前我正在做的是连接汽车和car_promotions模型,然后对于经销商在他们的数据库中的每个促销,循环通过它们,并获得我的连接中涉及促销的行数。这是有效的,但它真的很慢,所以我想知道如何优化它(使用rails查询或mysql查询)。我的sql查询写得不是很好,所以我遇到了一些问题,让它正常工作。

我也尝试在我的joins上使用group_by,但我不确定如何工作,因为如果我直接在joins上做group_by,它没有对promotion_id的引用。

有什么想法吗?谢谢,

EN

回答 1

Stack Overflow用户

发布于 2015-04-27 04:58:09

一旦超过两个表,我发现编写原始SQL通常会更容易。这可能会完成您想要的操作:

代码语言:javascript
复制
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查询可能是可能的。如果你发布你的数据库模式,别人可能会更容易帮助你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29881770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档