2016-05-14 63 views
1

我有以下型號Rails的活動記錄 - 調用DISTICT行

influencers (id, name, ..) 
influencer_authorizations (id, influencer_id, ...) 
influencer_metrics (id, influencer_authorization_id, date, count) 

的關係如下所示

influencers has_many influencer_authorizations 
influencer_authorizations has_many influencer_metrics 

我要取的是最新的influencer_metrics所有influencer_authorizations的計數DATE並總計顯示influencer的總追隨者

正在嘗試什麼

找到所有的授權標識

influencer_authorizations = InfluencerAuthorization.where(influencer_id: influencer.id).pluck(:id) 

我現在想找到最新的日期的所有行的influencer_authorizations技術上每個influencer_authorizations它應該給回一排我要計算其總和。

total_followers = InfluencerMetric.where(influencer_authorization_id: influencer_authorizations).order('metrics_date DESC').first 

但它現在返回所有行。日期是棘手的,因爲我每個influencer_authorizations最後取回的日期有時可能會有所不同。所以我們需要最新的metrics記錄每個influencer_authorizations

回答

1

這可能是你要找的?

Influencer. 
    joins(influencer_authorizations: :influencer_metrics). 
    select("SUM(influencer_metrics.count) as followers, COUNT(influencer_metrics.id)"). 
    where(id: influencer.id). 
    group("influencer_authorizations.id"). 
    order("influencer_metrics.metrics_date DESC"). 
    limit(1) 

我對你所描述的查詢不是很清楚,因爲有些措辭似乎是從模式關係中反轉過來的。這可能是一個起點。

如果碰巧沒有按預期工作,請嘗試刪除.limit(1)部分並查看返回的內容。如果你是比賽的話,我們可以從那裏出發。

+0

基本上我想要影響者的總追隨者。基於最新的Crawled數據,用於諸如'facebook'' twitter等各種授權 –