[RUBY-ON-RAILS] GroupingError : 오류 : 열이 GROUP BY 절에 나타나야합니다 또는 집계 함수에 사용
RUBY-ON-RAILSGroupingError : 오류 : 열이 GROUP BY 절에 나타나야합니다 또는 집계 함수에 사용
나는 (A has_many 리뷰 관계를 통해 가장 높은 평가 앨범을 표시하는 방법이 솔루션에서 사용되는 코드)를 가장 높은 평균 심사 평가로 앨범 순위 내 컨트롤러 코드가 있습니다 :
@albums = Album.joins(:reviews).select("*, avg(reviews.rating) as average_rating").group("albums.id").order("average_rating DESC")
내가 Heroku가에 코드를 밀어 나는이 오류가 발생했습니다 PostgreSQL을 할 때이 코드는하지만, 내 개발 환경 (sqlite3를)에서 완벽하게 작동합니다 :
PG::GroupingError: ERROR: column "reviews.id" must appear in the GROUP BY clause or be used in an aggregate function
나는 조금 나는 그것이 모두 내 개발 및 생산 환경에서 작동하도록 코드를 리팩토링하는 데 문제가 있어요 그래서 SQL과 미숙 한 오전, 이것은 매우 일반적인 문제입니다 알고 있습니다.
해결법
-
==============================
1.당신은 평균과 같은 집계 함수를 GROUP BY 절에 추가하거나 적용하지 않고 (와일드 카드 *를 통해 암시 적으로 선택) reviews.id을 선택 할 수 없습니다 (). 이 솔루션은 다음 중 하나를 수행하는 것입니다 :
당신은 평균과 같은 집계 함수를 GROUP BY 절에 추가하거나 적용하지 않고 (와일드 카드 *를 통해 암시 적으로 선택) reviews.id을 선택 할 수 없습니다 (). 이 솔루션은 다음 중 하나를 수행하는 것입니다 :
두 번째와 세 번째 옵션은하지만 당신의 시나리오에서 많은 이해가되지 않습니다. 귀하의 의견을 바탕으로, 나는 옵션 네 가지를 추가했다.
-
==============================
2.다만 활성 레코드 (시나)를 사용하여 루비에이 코드를 공유하고 싶습니다
다만 활성 레코드 (시나)를 사용하여 루비에이 코드를 공유하고 싶습니다
나는 코드의 라인 때문에, 기능 "에 의해 순서"는에 "그룹화"를 추가했다 ...
에서:
@models = Port.all.order('number asc')
에:
@models = Port.select(:id, :device_id, :number, :value, :sensor, :UOM).all.order('number asc').group(:id,:sensor,:UOM)
그리고 그렇지 않으면이 오류가 발생합니다, 다만이 경우 "Port.id"그룹 절에 추가해야합니다에서 ID 필드를 완벽하게 기억하는 일, 그리고 @slash가 언급 한대로 (특수 기능이 달성 와일드 카드를 통해 암시 적으로 선택할 수 없습니다 * 또는 제 경우에 사용하는 "모든")
-
==============================
3.나는 이런 종류의 문제를 발견하는 유일한 정말 허용 솔루션이 코드를했다 :
나는 이런 종류의 문제를 발견하는 유일한 정말 허용 솔루션이 코드를했다 :
@albums = Album.joins(:reviews).select("*, avg(reviews.rating) as average_rating").group_by(&:id).order("average_rating DESC")
나는 사람을 도움이되기를 바랍니다.
from https://stackoverflow.com/questions/20942477/groupingerror-error-column-must-appear-in-the-group-by-clause-or-be-used-in-an by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 어떻게 레일의 연결 방법의 일을? (0) | 2020.02.16 |
---|---|
[RUBY-ON-RAILS] periodically_call_remote 3 당량 레일 (0) | 2020.02.16 |
[RUBY-ON-RAILS] 레일 3.1.0와 우분투와 노코 기리 1.5.0 설치 오류 (0) | 2020.02.16 |
[RUBY-ON-RAILS] PostgreSQL의에서 작동 쿼리의 시간을 수행 (0) | 2020.02.16 |
[RUBY-ON-RAILS] 루비에서 클래스 이름 전에 더블 콜론? (0) | 2020.02.16 |