在我的應用程序用戶寄存器活動,這屬於流。註冊在註冊模型中進行管理,該模型具有名爲'參加'的布爾字段。Rails3:左連接聚合計數 - 如何計算?
我在嘗試生成排行榜並需要知道:每個用戶的註冊總數以及每個單獨事件流中用戶註冊的數量。
我想這(在User.rb):
# returns an array of users and their attendence count
def self.attendance_counts
User.all(
:select => "users.*, sum(attended) as attendance_count",
:joins => 'left join `registrations` ON registrations.user_id = users.id',
:group => 'registrations.user_id',
:order => 'attendance_count DESC'
)
end
生成的SQL適用於只是返回總參加數爲每個用戶,當我在數據庫中運行它,但所有的得到恢復是Rails中的用戶記錄。
我即將放棄並硬編碼每個流的counter_cache(它們相當固定)到用戶表中,只要在註冊模型保存上參加屬性更改時手動更新它。
不過,我很好奇如何執行這樣的查詢。在計算關係記錄的統計和報告時,它一定會出現。
你的時間和考慮是非常感謝。提前致謝。
謝謝各位。我仍然必須使用原始連接sql來獲取0(好,空)的記錄,但最後一部分通過模型訪問自定義字段非常有用。 – manafire