같은 모델을 감안할 때 :모델의 필드 당 고유 레코드 수를 출력하는 쿼리?
Contact (id, user_id, xxx, xxxxxxx)
연락처 모델에서 고유 한 user_id 레코드 수를 출력하는 쿼리를 원합니다? 이것을 쓰는 방법에 대한 생각?
감사
같은 모델을 감안할 때 :모델의 필드 당 고유 레코드 수를 출력하는 쿼리?
Contact (id, user_id, xxx, xxxxxxx)
연락처 모델에서 고유 한 user_id 레코드 수를 출력하는 쿼리를 원합니다? 이것을 쓰는 방법에 대한 생각?
감사
가 SQL에서이 일을 여러 가지 방법이 있지만, 당신이 원하는 경우에 가능한 한 많은 액티브에서 제공하는 ORM 내에서 유지하려고하는 나는 다음은 당신이 얻을하려고하는 가장 가까운 생각 :
@user_ids = Contact.select('DISTINCT user_id').all
@user_ids
는 접촉 테이블의 레코드에서 참조 된 모든 사용자 ID 배열 될 것이다. 몇 명이 있는지 알고 싶다면 @user_ids.count
으로 전화하십시오.
업데이트 :이 일의 또 다른 방법은 각 개체를 인스턴스화의 오버 헤드없이 더 많은 정보를 제공하고 다음과 같이 SQL은 쓰기 방지 :
Contact.group('user_id').count #=> { 1 => 3, 2 => 4, 3 => 10 }
당신은 응답을 볼 수 있듯이 사용자 ID를 키로하고 각 사용자의 수량을 값으로하는 해시입니다. 당신은 다른 .count
로 고유 한 사용자 ID의 수를 얻을 수 있습니다 :
Contact.count('user_id', :distinct => true)
# SELECT COUNT(DISTINCT "contacts"."user_id") FROM "contacts"
Contact.count('DISTINCT user_id')
# SELECT COUNT(DISTINCT user_id) FROM "contacts"
'SELECT COUNT (DISTINCT USER_ID) 오 좋은 – Zabba