Rails - 显示匹配的记录

时间:2014-07-23 00:43:33

标签: sql ruby-on-rails ruby-on-rails-4 ruby-on-rails-4.1

如何执行Rails查询以显示StudentExam中存在匹配项的所有考试?我有3张桌子,学生,考试和StudentExam。前两个是自我描述性的。 StudentExam表有3个字段:student_id,exam_id和status。我想在StudentExam中搜索特定的用户ID(比如1)并显示该学生的所有匹配考试。

2 个答案:

答案 0 :(得分:0)

select se.*, e.*
  from studentexam se
  join exam e
    on se.exam_id = e.id
 where se.student_id = 'X'

将上面的“e.id”替换为EXAM表上的任何字段,表示与EXAM表的EXAM_ID字段关联的考试ID。

将'X'替换为感兴趣的student_id。

如果要从EXAM表中选择一些但不是所有列,请在选择列表中更改e。*。

答案 1 :(得分:0)

那么你有一个连接表,一个has_and_belongs_to_many或者什么?在这种情况下

@user = User.find(1)
@exams = @user.exams

或者如果情况并非如此,第三张表基于模型,那么首选方式

@exams = Exam.joins(:student_exams).where("student_exams.student_id = ?" 1)

@exams = StudentExam.where(student_id: 1).each.collect { |row| row.exam }

修改

要收集它们,可能类似

@exams = StudentExam.where(student_id: 1).each.collect { |row| [row, row.exam] }