2017-05-26 52 views
-1

我是比較新的Rails(Rails 4)。 所以我有一個表talent_media,它具有talent_idmedia_id屬性。Rails加入並計數

同樣的media_id會出現很多次。 Kanye(talent_id)可能會喜歡20首不同的歌曲(media_id),並且每個歌曲都在它自己的行中。 我也有一個Media表,有不同的行。 我需要根據media_id行找到排名前100位的talent_media條目,並將其與基於media.id行的Media表加入。因此,本質上,我得到talent_media表中最受歡迎的歌曲,然後加入它們以返回Media表中的實際媒體信息。

我希望這是有道理的。

回答

0

您可以查詢您的TalentMedia模型得到的結果..

@top_100 = TalentMedia.includes(:media).select(:media_id).order('count(talent_id) desc').group(:media_id).limit(100) 

然後,您可以顯示每個人的遍歷它像,

@top_100.each do |topper| 
    topper.media.name 
end 
+0

嗯,這似乎不工作: 'Mysql2 ::錯誤:'where子句'中的未知列'media.talent_medium_id':SELECT'media'。* FROM'media' WHERE'media'.'talent_medium_id' IN('')):' – Niineswiss

+0

ohh,可能錯過了一些東西,你可以發佈它生成的sql查詢嗎?使用'.to_sql'' TalentMedia.includes(:media).select(:media_id).order('count(talent_id)desc')。group(:media_id).to_sql' –