正确的SQL或ActiveRecord公式
下面是一个场景。我有一个名为“情绪日志”的数据库,它记录了参加某个讲座的学生的实时“投票”,这些学生在特定的时间“参与”或“困惑”投票。讲座分为以整数表示的时段。架构如下所示:正确的SQL或ActiveRecord公式,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,下面是一个场景。我有一个名为“情绪日志”的数据库,它记录了参加某个讲座的学生的实时“投票”,这些学生在特定的时间“参与”或“困惑”投票。讲座分为以整数表示的时段。架构如下所示: student_id: int sentiment_id: int lecture_id: int time_slot: int rails模型是感性的,我相信我想要的东西可以在一点聪明的SQL中完成,但我还没有成功地制定出它。我想要的是,给定一个目标时间段和一个目标讲座id,每个学生id都有一个记录的结果集,如下所示
student_id: int
sentiment_id: int
lecture_id: int
time_slot: int
rails模型是感性的,我相信我想要的东西可以在一点聪明的SQL中完成,但我还没有成功地制定出它。我想要的是,给定一个目标时间段和一个目标讲座id,每个学生id都有一个记录的结果集,如下所示:
student_id: int
sentiment_id: int
lecture_id: int
time_slot: int
- 学生证
- 在学生投票的最近时段记录的情绪
- 选择一个子集记录,其
和teaching\u id==target\u teaching\u id
time\u slot您还没有告诉我们您的型号名称,因此我将其称为“Foo”。我还假设所有内容都在同一张表中。您没有描述学生id,它与用户id相同吗
结果使用示例:@foos=Foo.where("lecture_id = ? AND time_slot <= ?",target_lecture_id, target_time_slot).maximum(:time_slot, group: :student_id)
@foos.each do |foo| puts foo[0] #... (student_id) puts foo[1] #... (max time_slot) end
抱歉,该模型名为感伤日志,学生id是它应该是的,用户id是一个输入错误,我会更正。谢谢!我会试试看:)