gpt4 book ai didi

mysql - Rails/MySQL 查询连接多个表时获取计数

转载 作者:行者123 更新时间:2023-11-29 22:30:05 26 4
gpt4 key购买 nike

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

我想要做的是对于每个经销商,获取他们当前拥有的每种不同 car_promotion 的数量。例如,如果有一项促销事件称为“5% 折扣”,还有一项促销事件称为“免运费”,则将对进行第一次促销事件的汽车数量和进行第二次促销事件的汽车数量进行罚款。

经销商.rb:

has_many :cars, :promotions

汽车.rb:

has_many :car_promotions
attr_accessor :dealer_id

CarPromotion.rb:

belongs_to :car, :promotion.rb
attr_accessor :car_id, :promotion_id

促销.rb

belongs_to :dealer

目前我正在做的是连接 cars 和 car_promotions 模型,然后对于经销商数据库中的每个促销,循环遍历它们并获取我的连接中涉及促销的行数。这是可行的,但它真的很慢,所以我想知道如何优化它(使用rails查询或mysql查询)。我的 SQL 查询编写不太好,因此在使其正常工作时遇到一些问题。

我还尝试在连接上使用 group_by ,但我不确定如何使其正常工作,因为如果我直接在连接上执行 group_by ,它就没有对 Promotion_id 的引用。

有什么想法吗?谢谢,

最佳答案

一旦超出两个表的范围,我发现编写原始 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 查询可能是可能的。如果您发布数据库架构,其他人可能会更容易帮助您。

关于mysql - Rails/MySQL 查询连接多个表时获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29881770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com