Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rails创建查找连接表的方法(使用.find方法)_Ruby_Ruby On Rails 3_Orm_Model - Fatal编程技术网

Ruby Rails创建查找连接表的方法(使用.find方法)

Ruby Rails创建查找连接表的方法(使用.find方法),ruby,ruby-on-rails-3,orm,model,Ruby,Ruby On Rails 3,Orm,Model,我有以下表格: 用户操作: 类型\操作:字符串 实体id:int 日期:日期时间 用户id:int(参考用户) 问题: 文本:字符串 用户id:int(参考用户) 回答:tinyint EntityTracker 键入\轨道:字符串 实体id:int 操作:字符串 日期:日期时间 我需要知道EntityTracker(别名et)中有多少(计数)记录满足以下条件: -动作=‘已回答’ -键入\轨道='问题' -日期>超过(ua.entity\u id=et.entity\u id和ua.ty

我有以下表格:

用户操作:
类型\操作:字符串
实体id:int
日期:日期时间
用户id:int(参考用户)

问题:
文本:字符串
用户id:int(参考用户)
回答:tinyint

EntityTracker
键入\轨道:字符串
实体id:int
操作:字符串
日期:日期时间

我需要知道EntityTracker(别名et)中有多少(计数)记录满足以下条件:
-动作=‘已回答’
-键入\轨道='问题'
-日期>超过(ua.entity\u id=et.entity\u id和ua.type\u action=et.type\u track的用户操作(别名ua)中的记录日期)
-实体id满足条件:id为et的问题。实体id具有用户id=参数[:用户id]


所以我必须加入提问和行动。

有什么帮助吗?

可能是这样的:

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])

如何管理嵌套select:select max(…)可以为空的条件?类似于et.date>(选择max…)的内容,如果不是依赖于数据库引擎的null,例如对于MySQL,您可以使用IFNULL: