>

나는 쿼리를 시도하고 있는데 이것의 구문을 깨뜨릴 수 없다. 따라서 가장 최근의 이번 달에 대한 설문 조사를 가져 와서 5로 제한 한 다음 설문에 대한 응답 인 관련 테이블의 수에 따라 순서를 정해야합니다. 설문 조사에 8 개의 응답이 있고 4 개의 응답이있는 경우 8이있는 설문 조사가 맨 위에 표시됩니다.

한 달에 대한 설문 조사를 찾도록 범위를 설정했지만보다 관련성 높은 쿼리를 위해이를 삭제하거나 max survey.response_count 에서 주문할 수있는 방법을 찾아야합니다.  .

이것은 내가 얻은 가장 근접하지만 여전히 정확하지 않습니다.

@sorted_active_surveys = Survey.joins(:survey_responses).group(:survey_id).order('COUNT(survey_responses.survey_id) DESC')

스코프와 함께 시도하면 created_at  날짜가 모호 해지고 오류가 발생합니다.

Survey.rb

scope :for_month, ->(date) { where("MONTH(created_at) = ?", date.month).limit(5) }

이것도 같은 오류를 일으 킵니다

   scope :for_month, ->(date) { where("MONTH(survey.created_at) = ?", date.month).limit(5) }

도움을 주시면 대단히 감사하겠습니다.


  • 답변 # 1

    이 범위를 유지하지 않지만 응답 수에 따라 순서대로 정렬하고 현재 달 내 날짜를 유지합니다.

    Survey.where('surveys.created_at > ? AND surveys.created_at < ?', Time.now.beginning_of_month, Time.now.end_of_month).joins(:survey_responses).group(:survey_id).order('COUNT(survey_responses.survey_id) DESC')
    
    

관련 자료

  • 이전 bash - SED를 사용하여 HTML 문서의 내부 링크를 수정 하시겠습니까?
  • 다음 java - isEnabled () 메소드는 항상 true를 리턴합니다