此刻,我正在研究Rails,并尝试按field
对查询结果进行分组。
查询的创建者:
@orders = Order.includes(:product).where(user_id: current_user.id, paid: 0).group(:product_id)
它在sqlite(dev env)上运行良好,但在生产(postgreSQL)时抛出致命错误。
错误是:
ActionView::Template::Error (PG::GroupingError: ERROR: column "orders.id" must appear in the GROUP BY clause or be used in an aggregate function
嗯..我在这里做错了什么? 谢谢
答案 0 :(得分:0)
如果要归入postgres,则需要直接选择该列,或者需要调用使用此列的聚合函数。 Count
是一个聚合函数,您可以通过以下方式在Rails中实现
@product_counts = Order.where(user: current_user, paid: 0).group(:product_id).count
Postgres在您分组的列上自动执行Count
,在本例中为product_id
。这将为您提供这样的哈希值:
{ product_id => count }
有关更多信息,请参见此处:https://www.tutorialspoint.com/postgresql/postgresql_group_by.htm