2017-03-24 3 views
0

mysql 쿼리를 활성 레코드 쿼리로 변환하는 데 도움이 필요합니다.MySQL 코드를 레일스 활성 레코드 쿼리로 변환

SELECT ad_trek_participant.id, ad_registration_data.id, ad_registration_data.email, ad_registration_data.first_name,ad_registration_data.last_name, ad_trek_participant.status, ad_trek_participant.payment_status, COUNT(*) AS occurrences 
FROM ad_trek_participant 
INNER JOIN ad_registration_data ON ad_trek_participant.Registration_Data_Id = ad_registration_data.id 
WHERE ad_trek_participant.status = '2' 
AND ad_trek_participant.payment_status = '2' 
GROUP BY ad_trek_participant.Email_Id 
HAVING COUNT(*) >=5 
LIMIT 0 , 1000 

모델 사이의 관계는 has_one 및 쿼리가 좋은 나를 위해 일한 아래 has_one :participation, foreign_key: "registration_data_id"

ad_trek_participant belongs_to :registration_data, foreign_key: "Registration_Data_Id"

+0

예, 쿼리입니다. 변환은 모델 작성 방법과 관계가 적절하게 표현되는지 여부 (예 :'has_many' 등)에 따라 다릅니다. – tadman

+0

@tadman 질문이 업데이트되었습니다. 지금 확인하십시오. –

답변

0

ad_registration_databelongs_to입니다.

@participations = Participation.joins(:registration_data) 
.where(payment_status:2,status:2) 
.group("ad_registration_data.email") 
.having("count(ad_registration_data.email)>=5") 
.count('ad_registration_data.email')