2011-08-19 2 views
0

은 내가,rails 3 + activerecord : field2로 그룹화 된 하나의 쿼리 (field1)가 있습니까?

id 
region_number integer (NOT associated with another table) 
member_name string 
member_active T/F 

회원 영역에 속하는 필드와 테이블 정보를 가지고 이름을 가지고, 활동 중 하나입니다

테이블의 데이터를 요약하는 가장 좋은 방법을 찾기 위해 노력하고있어 아닙니다.

독특한 region_numbers 있기 때문에 3 열, 그리고 많은 행이있는 테이블을 생성하는 단일 쿼리가 있는지 궁금 해요 :

For each unique region_number: 
    region_number 
    COUNT of members in that region 
    COUNT of members in that region with active=TRUE 

가한다고 가정 내가 50 개 지역이, 내가 어떻게 볼은 2x50 쿼리로 처리 할 수는 있지만 올바른 접근 방식은 아닙니다.

답변

1

할 수 있습니다 몇 가지에 항상 그룹은 후 처리의 작은 비트를 할 준비가 있다면 : 이것은 동시에 모든 지역 번호에 대한 하나 개의 쿼리로 할 수 있습니다

SELECT region_number, COUNT(*) AS instances, member_active 
    GROUP BY region_number, member_active 
    WHERE region_number IN ? 

. T 값에 대해 하나의 행이 있으며, 하나는 F에 대한 것이고, 그 값이있는 경우에만 있습니다.

식별자 만 다른 많은 쿼리를 수행하는 경우, 일반적으로 이와 같은 한 번에 실행할 수 있습니다.

+0

나는 그것을 시도 할 것이다! 그것을하기위한 액티브 레코드가 있습니까? 또는 SQL을 직접 수행해야합니까? – jpwynn

+0

ActiveRecord 방법은 'select_all'과 같이 제공된 래퍼와 함께 'connection' 메소드를 사용하여 결과를 가져와 해석하는 데 도움을줍니다. ORM은 당신을 위해 모든 것을 결코하지 않을 것입니다. – tadman

관련 문제