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