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: