gpt4 book ai didi

mysql - Rails 3根据关联计数进行查询

转载 作者:IT老高 更新时间:2023-10-28 23:42:22 26 4
gpt4 key购买 nike

在带有 mysql 的 Rails 3 中,假设我有两个模型,Customers 和 Purchases,显然是 purchase belongs_to customer。我想找到所有有 2 个或更多订单的客户。我可以简单地说:

Customer.includes(:purchases).all.select{|c| c.purchases.count > 2}

实际上,上面的行对 Customer.all 和 Purchase.all 的大小进行了查询,然后在 ruby​​ 中进行了“选择”类型的处理。在大型数据库中,我更愿意避免在 ruby​​ 中进行所有这些“选择”计算,让 mysql 进行处理,只给我合格客户的列表。这既要快得多(因为 mysql 更适合这样做)并且显着减少了数据库的带宽。

不幸的是,我无法用 Rails 中的构建 block (在哪里、拥有、组等)中编写代码来实现这一点,类似于(伪代码):

Customer.joins(:purchases).where("count(purchases) > 2").all

我会满足于直接的 MySql 解决方案,尽管我更喜欢在优雅的 rails 框架中解决这个问题。

最佳答案

无需安装 gem 即可使用(尽管 metawhere 很酷)

Customer.joins(:purchases).group("customers.id").having("count(purchases.id) > ?",0)

关于mysql - Rails 3根据关联计数进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6313621/

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