을 감안할 때 레일 응용 프로그램 :카운트 별개의 기록하면서
[[23, "Pat", "Smith"]] Teams: 1
[[46, "Kate", "Jones"]] Teams: 1
[[107, "John", "Doe"]] Teams: 3
...
: 나는 간결 데이터베이스를 조회하고 그들이에 속하는 캡틴의 요약 및 팀의 수를 얻으려고
class Team < ActiveRecord::Base
belongs_to :captain, class_name: User
을
나는 각 선장의 ID와 해시와 팀의 수를 얻을 수 있습니다 :
> Team.group(:captain_id).count
=> {85=>3, 106=>1, 81=>1, 25=>1, 32=>1, 8=>3, 1=>1, 79=>2, 26=>1}
을하지만 그것은 도착 추한. 다음은 작동하지만 못생긴 것처럼 보이고 n + 1 SQL 쿼리가 있습니다.
Team.group(:captain_id).count.sort.to_h.each { |key,val| puts "#{User.where(id: key).pluck(:id, :first, :last)} Teams: #{val}" }
Rails 방식은 무엇입니까?
귀하의 질문은 직접적인 복제는 아니지만 [이 질문 및 답변]에서 유용한 내용을 찾을 수 있습니다 (https://stackoverflow.com/questions/17252669/rails-query-with-select-group-and). -having-wont-work). 또한 귀하의 협회를 양방향으로 만드십시오. – anothermh