一个事件有一个popularity列和许多关键字。关键字具有类别和名称。我试图按事件的流行程度对事件进行排序,但随后仅从类别为“分类法”的每个关键字名称返回最流行的事件。

这是我的查询:

Event
  .order(:popularity)
  .joins(:keywords)
  .where(keywords: {category: "taxonomy"})
  .group("keywords.name")

但我得到以下错误:



我要去哪里错了?

最佳答案

Event
  .order(:popularity)
  .joins(:keywords)
  .group('events.id') # <======
  .where(keywords: { category: 'taxonomy' })
  .group('keywords.name')

关于ruby-on-rails - PG::GroupingError:错误:列 "events.id"必须出现在GROUP BY子句中或在聚合函数中使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40116199/

10-13 07:58