我已經完成了兩個表的簡單Rails查找,但是現在發現使用4表查詢我沒有取得很好的進展。所有表與鍵連接,並且基本上都是:Rails中的多表查詢
- 用戶(有很多)
- 電話(有很多)
- 廣告活動(有很多)
- 呼叫
我只是想統計特定用戶的總呼叫次數以及特定活動的總呼叫次數。我還可以將用戶ID添加到Campaigns和Calls,但由於某種原因,我認爲這是作弊或一個壞主意。我只是不知道。
我已經完成了兩個表的簡單Rails查找,但是現在發現使用4表查詢我沒有取得很好的進展。所有表與鍵連接,並且基本上都是:Rails中的多表查詢
我只是想統計特定用戶的總呼叫次數以及特定活動的總呼叫次數。我還可以將用戶ID添加到Campaigns和Calls,但由於某種原因,我認爲這是作弊或一個壞主意。我只是不知道。
的Rails 3:
呼叫總數特定用戶具有:
@user.phones.joins(:campaigns => :calls).count
特定活動的呼叫總數:
@user.phones.joins(:campaigns => :calls).where('campaigns.id' => @campaign.id).count
假設一個手機屬於用戶,以及宣傳屬於電話:
# total calls for a specific campaign
campaign_call_count = Campaign.find(id).calls.count
# or a report for all campaings
Campaign.all.map{|c| "#{c.name}: #{c.calls.count}"
#total calls a user has
user_phone_ids = user.phones.map(&:id)
user_calls_by_campaign = Campaign.where(:phone_id=>user_phone_ids).map{|campaign| "#{user.name} calls for #{campaign.name}: #{campaign.calls.count}" }
puts user_calls_by_campaign
這應該給你一個列表
不知道什麼「和」是的,所以當事情解決了一點,我會去找出這個新的對我的事情。感謝您的回覆,希望我可以選擇頂級答案! – rtfminc 2011-05-05 14:40:10
map(&:id)是map {| user | user.id} – 2011-05-05 15:40:49
謝謝,試過了,噢,很高興看到它的工作。 – rtfminc 2011-05-05 14:38:51