2015-01-15 69 views
0

大家好我得到這個錯誤:Rails的活動記錄查詢斷裂當切換到PostgreSQL的

column "article_tags.id" must appear in the GROUP BY clause or be used in an aggregate function 

,當我打開與此查詢到PostgreSQL:

@article_tags = ArticleTag.includes(:tag, :article).where(is_deleted: [nil, false]).where('tags.is_deleted' => [nil, false], 'articles.is_deleted' => [nil, false], 'articles.category_id' => @category.id).group('tags.slug').order('tags.articles_count DESC') 

我曾嘗試與選擇固定它只有像這樣的關聯記錄:

@article_tags = ArticleTag.includes(:tag, :article).where(is_deleted: [nil, false]).where('tags.is_deleted' => [nil, false], 'articles.is_deleted' => [nil, false], 'articles.category_id' => @category.id).select("tags.*").group('tags.slug').order('tags.articles_count DESC') 

但是,特定的SELECT被忽略。

它在使用MySQL時從不破壞。有人能告訴我我做錯了什麼嗎?

+0

您是否嘗試過搜索「必須出現在GROUP BY子句或用於聚合函數」?這個問題已經出現了數百次。 –

+0

是的,我試過這些解決方案,但他們似乎沒有工作。 – Darren

+0

然後在你的問題中包含嘗試的解決方案和結果。 –

回答

0

所以我相信我已經以合適的方式解決了我的問題。基本上我擺脫了包括和組。我改用連接並選擇不同的列。下面是我的最終查詢,如果有人遇到這些問題(S):

@article_tags = ArticleTag.select("DISTINCT (tags.slug), tags.articles_count").joins(:tag, :article).where(is_deleted: [nil, false]).where('tags.is_deleted' => [nil, false], 'articles.is_deleted' => [nil, false], 'articles.category_id' => @category.id).order('tags.articles_count DESC')