복붙노트

[RUBY-ON-RAILS] 쿼리 열 수를 선택할 수 없습니다

RUBY-ON-RAILS

쿼리 열 수를 선택할 수 없습니다

Tag.joins(:quote_tags).group('quote_tags.tag_id').order('count desc').select('count(tags.id) AS count, tags.id, tags.name')

Build query:
SELECT count(tags.id) AS count, tags.id, tags.name FROM `tags` INNER JOIN `quote_tags` ON `quote_tags`.`tag_id` = `tags`.`id` GROUP BY quote_tags.tag_id ORDER BY count desc

결과:

[#<Tag id: 401, name: "different">, ... , #<Tag id: 4, name: "family">]

그것은 나를 위해 카운트 열을 반환하지. 어떻게 그것을 얻을 수 있나요?

해결법

  1. ==============================

    1.당신은 반환 태그 개체 중 하나에 대한 계산 방법을 호출 시도? 그냥 때문에이없는 것을 의미하지 않는다 수를 언급하지 않는 검사합니다. 출력을 검사 :

    당신은 반환 태그 개체 중 하나에 대한 계산 방법을 호출 시도? 그냥 때문에이없는 것을 의미하지 않는다 수를 언급하지 않는 검사합니다. 출력을 검사 :

    [#<Tag id: 401, name: "different">, ... , #<Tag id: 4, name: "family">]
    

    태그 클래스에 대해 알고 태그는 태그 테이블의 컬럼에 대해 알아야 할 것들만을 포함합니다 : 그것은 당신이 보는 모든 그래서 당신은 단지 테이블의 ID와 이름을 가지고있다.

    이 작업을 수행하는 경우 :

    tags = Tag.joins(:quote_tags).group('quote_tags.tag_id').order('count desc').select('count(tags.id) AS count, tags.id, tags.name')
    

    다음 카운트를 보면 :

    tags.map(&:count)
    

    당신은 당신이 기대하고 있다는 카운트의 배열을 볼 수 있습니다.

  2. ==============================

    2.업데이트 :이 답변의 원본 버전은 실수로 선택 특징 및 후속 버전 효과적으로 @muistooshort에서 다른 대답의 현재 버전을 반복 끝났다. 이 원시 SQL을 사용하는 방법에 대한 정보를 가지고 있기 때문에 현재 상태 년대에 나는 그것을 떠날거야. 덕분에 내 오류를 지적하기위한 @muistooshort합니다.

    업데이트 :이 답변의 원본 버전은 실수로 선택 특징 및 후속 버전 효과적으로 @muistooshort에서 다른 대답의 현재 버전을 반복 끝났다. 이 원시 SQL을 사용하는 방법에 대한 정보를 가지고 있기 때문에 현재 상태 년대에 나는 그것을 떠날거야. 덕분에 내 오류를 지적하기위한 @muistooshort합니다.

    쿼리에 다른 대답에 의해 설명 된 바와 같이 일하는 사실이지만, 당신은 항상 대안으로 원시 SQL을 실행할 수 있습니다.

    거기 당신이 선택할 수있는 선택 _... 다양한 방법이있다,하지만 난 당신이 SELECT_ALL을 사용하고자하는 거라고 생각합니다. 당신이 암시 적으로 생성하는 빌드 조회를 정정 한 가정하면, 그냥 같은 것을 사용할 수 있습니다 :

    ActiveRecord::Base.connection.select_all('
      SELECT count(tags.id) AS count, tags.id, tags.name FROM `tags`
        INNER JOIN `quote_tags` ON `quote_tags`.`tag_id` = `tags`.`id`
        GROUP BY quote_tags.tag_id
        ORDER BY count desc')
    

    당신이 선택할 수있는 다양한 방법에 대한 자세한 내용은 http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html를 참조하십시오.

  3. from https://stackoverflow.com/questions/18350632/query-can-not-select-column-count by cc-by-sa and MIT license