gpt4 book ai didi

sql - Rails 4 中的左外连接

转载 作者:行者123 更新时间:2023-12-03 05:16:35 24 4
gpt4 key购买 nike

我有 3 个模型:

class Student < ActiveRecord::Base
has_many :student_enrollments, dependent: :destroy
has_many :courses, through: :student_enrollments
end

class Course < ActiveRecord::Base
has_many :student_enrollments, dependent: :destroy
has_many :students, through: :student_enrollments
end

class StudentEnrollment < ActiveRecord::Base
belongs_to :student
belongs_to :course
end

我希望查询 Courses 表中的类(class)列表,但 StudentEnrollments 表中不存在与特定学生关联的类(class)列表。

我发现也许 Left Join 是可行的方法,但似乎 Rails 中的 join() 只接受表作为参数。我认为可以实现我想要的 SQL 查询是:

SELECT *
FROM Courses c LEFT JOIN StudentEnrollment se ON c.id = se.course_id
WHERE se.id IS NULL AND se.student_id = <SOME_STUDENT_ID_VALUE> and c.active = true

如何以 Rails 4 方式执行此查询?

欢迎任何意见。

最佳答案

您也可以传递一个作为 join-sql 的字符串。例如 joins("LEFT JOIN StudentEnrollment se ON c.id = se.course_id")

尽管为了清楚起见,我会使用 Rails 标准表命名:

joins("LEFT JOIN student_enrollments ON courses.id = student_enrollments.course_id")

关于sql - Rails 4 中的左外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24358805/

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