2016-05-19 65 views
0

我有工作錯誤:列「engagements.id」必須出現在GROUP BY子句或聚合函數中使用

@engagements = Engagement.includes(:participation).where(influencer_authorization_id: current_influencer.id).group_by { |p| p.status } 

以下查詢我試圖使用數據庫功能,而不是的Ruby/Rails功能組,下面是我的代碼

engagements = Engagement.where(influencer_authorization_id: current_influencer.id).group("status") 

但我收到以下錯誤

ERROR: column "engagements.id" must appear in the GROUP BY clause or be used in an aggregate function LINE 1: SELECT "engagements".* FROM "engagements" WHERE "engagements... ^

更新

我試着做以下,但仍不起作用

engagements = Engagement.select("engagements.*").where(influencer_authorization_id: current_influencer.id).group("engagement.status") 

錯誤

ERROR: missing FROM-clause entry for table "engagement" LINE 1: ...ents"."influencer_authorization_id" = $1 GROUP BY engagement... ^

+0

'Enumerable#group_by'與SQL的'GROUP BY'有很大不同。 'group_by'或多或少用於構建數組元素與塊相同的數組。 「GROUP BY」用於對行進行分組,以便可以將聚合函數(例如'count','max',...)應用於每個組。 –

回答

1

你使用Postgres的? 問題是數據庫無法決定如何顯示例如當'status'對於多個記錄是相同的'id'列。您可以手動編寫select語句並使用聚合函數。 我覺得這個PostgreSQL -must appear in the GROUP BY clause or be used in an aggregate functionGroupingError: ERROR: column must appear in the GROUP BY clause or be used in an aggregate function有關

+0

是的,我正在使用PostgreSQL。將檢查出來 –

+0

我試過了,但仍然出現錯誤。已更新問題 –

+0

@HarshaMV應該是組(「engagements.status」)而不是組(「engagement.status」)。 此外,如果這將無法正常工作,請分享.to_sql輸出的查詢 – Leaf

相關問題