Ruby on rails Rails查询以子项和为条件

Ruby on rails Rails查询以子项和为条件,ruby-on-rails,ruby,database,ruby-on-rails-3.2,Ruby On Rails,Ruby,Database,Ruby On Rails 3.2,如何最好地在Rails(3.2)中生成一个查询,根据子记录的总和返回一组父记录 例如 如果和订单有许多项目 如何选择Items.price(订单)总和大于50.0的所有订单?尝试以下操作: Order.joins(:items).where("SUM(items.price) > 50").all Order.joins(:items). group("items.order_id"). having("SUM(items.price) > 50") 这将

如何最好地在Rails(3.2)中生成一个查询,根据子记录的总和返回一组父记录

例如

如果和订单有许多项目

如何选择Items.price(订单)总和大于50.0的所有订单?

尝试以下操作:

Order.joins(:items).where("SUM(items.price) > 50").all
Order.joins(:items).
      group("items.order_id").
      having("SUM(items.price) > 50")
这将对数据库进行一次查询,选择订单项价格之和大于50的所有订单

编辑:

这是行不通的。请参阅注释。

尝试以下操作:

Order.joins(:items).where("SUM(items.price) > 50").all
Order.joins(:items).
      group("items.order_id").
      having("SUM(items.price) > 50")

这将不起作用,因为您正在
WHERE
子句中使用group函数。是的,您是对的。此查询抛出“Mysql2::Error:Invalid use of group function”(Mysql2::Error:Invalid use of group function)。您需要将
group\u by
更改为
group
。这看起来最有希望,但我无法实现。出于某种原因,它返回了一个零集。你说零集是什么意思?撒谎,它工作得很完美!我把它放在上下文中的错误。