Activerecord Arel使用where和group查询问题
在Rails 4中,我有以下3个表: 包含以下列的用户表: -名字 -电子邮件 具有以下列的订单表: -数量 -用户id 包含以下列的项目表: -名字 -描述 包含以下列的OrderItems表: 订单号 项目编号 关系: -orderItems表是一个联接表 -用户有许多订单,一个订单属于一个用户 问题: 1) 查找5个最大订单(项目最多的订单) 我认为问题是:Activerecord Arel使用where和group查询问题,activerecord,Activerecord,在Rails 4中,我有以下3个表: 包含以下列的用户表: -名字 -电子邮件 具有以下列的订单表: -数量 -用户id 包含以下列的项目表: -名字 -描述 包含以下列的OrderItems表: 订单号 项目编号 关系: -orderItems表是一个联接表 -用户有许多订单,一个订单属于一个用户 问题: 1) 查找5个最大订单(项目最多的订单) 我认为问题是: OrderItem.group(:order_id).order(count(id) desc").limit(5).pluck(:
OrderItem.group(:order_id).order(count(id) desc").limit(5).pluck(:order_id)
小组到底在做什么?当我输入OrderItem.group(:order\u id)
时,我只是不理解输出
2) 如何找到名为“betty”和“TheEmail”的用户betty@gmail.com为此,我需要在Arel中编写SQL吗
OrderItem.group(:order\u id)
本身不会生成有效的SQL。group
变成SQLgroup by
语句,如果行与指定的列具有相同的值,则将行分组在一起。group by
需要与包含group by
中的列或重新聚合函数,如COUNT
您的完整查询在order
子句中缺少引号。您需要:
OrderItem.group(:order_id).order("count(id) desc").limit(5).pluck(:order_id)
User.where(name: "betty", email: "betty@gmail.com")