在Rails 4中,我有这3个表:
具有以下列的用户表:-name -email
订单表包含以下列:-amount -user_id
包含以下列的项目表:-name -description
OrderItems表包含以下列:order_id item_id
关系: - orderItems表是一个连接表 - 用户有很多订单,订单属于用户 .
问题:1)找到5个最大订单(订单最多的订单)我认为查询是:
OrderItem.group(:order_id).order(count(id) desc").limit(5).pluck(:order_id)
小组究竟做了什么?当我输入 OrderItem.group(:order_id)
时我不理解输出 .
2)如何找到名为“betty”和“email”的用户betty@gmail.com“ . 为此,我是否需要在我的Arel中编写SQL?
1 回答
OrderItem.group(:order_id)
本身不会产生有效的SQL .group
变成SQLGROUP BY
语句,如果它们为指定的列共享相同的值,则将行组合在一起 .GROUP BY
需要与SELECT
语句一起使用,该语句具有GROUP BY
中的列或者是COUNT
等聚合函数 .您的完整查询缺少
order
子句中的引号 . 你会想要: