gpt4 book ai didi

mysql - ActiveRecord 选择帐户中有 3 列的不同记录

转载 作者:行者123 更新时间:2023-11-30 22:17:44 26 4
gpt4 key购买 nike

在以下场景中:

ClassHour(teacher_id、room_id、hour_id、group_id、subject_id)

我需要在不考虑 group_id 的情况下获取给定教师的所有 class_hours。

id    teacher_id    room_id    hour_id    group_id    subject_id
1 1 1 1 1 1
2 1 1 1 2 1
3 1 2 2 1 1
4 2 1 3 2 3

我只需要获取给定教师的room_id、hour_id 和subject_id 的唯一记录

这是:teacher_one.schedule 应该返回 ID 为 [1,3] 的 class_hours 因为 id == 2 不是独一无二。

简而言之:如果我的老师有 ID 1teacher.schedule 需要返回:

id    teacher_id    room_id    hour_id    group_id    subject_id
1 1 1 1 1 1
3 1 2 2 1 1

最佳答案

在一次 HackHands session 之后,我们以这个结束,它完全有效:

class Teacher
...
def schedule
ids = ClassHour.find_by_sql(['SELECT max(class_hours.id) mid FROM class_hours inner join hours on class_hours.hour_id = hours.id inner join rooms on class_hours.room_id = rooms.id where class_hours.teacher_id = ? group by hours.id, rooms.id', self.id]).map { |x| x['mid'] }
ClassHour.find ids
end
end

但我不完全理解为什么这个查询会如我所愿地工作。如果有人可以解释,那就太好了。

关于mysql - ActiveRecord 选择帐户中有 3 列的不同记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37685573/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com