2011-12-28 53 views
0

我有以下表格:

UserAction:
type_action:字符串
ENTITY_ID:整數
日期:日期時間
USER_ID:INT (參考用戶)

問:
文本:字符串
USER_ID:INT(引用用戶)
回答:TINYINT

EntityTracker
type_track:字符串
ENTITY_ID:整數
行動:字符串
日期:日期時間

Rails的方法,使一個找到連接表(使用.find方法)

我需要知道有多少(數量)記錄在EntityTracker(別名等)符合這一條件:
- 行動= '回答'
- type_track = '問題'
- 日期>比(在UserAction(別名UA)與ua.entity_id = et.entity_id和ua.type_action = et.type_track記錄日期)
- ENTITY_ID滿足條件:使用id = et.entity_id問題已經user_id說明=參數[:USER_ID]


所以我有一個問題,並UserAction加入。
任何幫助嗎?

回答

1

也許是這樣的:

EntityTracker.find(:all, 
        :from => 'entity_trackers et', 
        :select => 'COUNT(et.id) AS count', 
        :conditions => ['et.action = ? AND 
            et.type_track = ? AND 
            et.date > (SELECT MAX(ua.date) 
               FROM user_actions ua 
               WHERE ua.entity_id=et.entity_id AND 
                ua.type_action=et.type_track) AND 
            EXISTS (SELECT questions.id 
              FROM questions 
              WHERE questions.id=et.entity_id AND 
                questions.user_id=?)', 
            'ANSWERED', 'QUESTION', user_id]) 
+0

謝謝,我會努力的! – Tony 2011-12-28 16:15:02

+0

如何管理該嵌套查詢條件:選擇最大(.....)可以爲空? 喜歡的東西et.date>(SELECT MAX ....)時不爲空 – Tony 2011-12-28 17:49:59

+0

也就是說數據庫引擎依賴,比如爲MySQL可以使用IFNULL:http://dev.mysql.com/doc/refman/5.0/ EN /控制流functions.html#function_ifnull – taro 2011-12-28 18:03:08

相關問題