我有以下数据库模式结构:
School
has_many :students
Students
has_many :books
Books
(has an attribute pages(integer))
问题是我想要一个学生在学校水平上拥有的一本书的所有页面的总数。但也有一种可能性,学生可能没有任何书。
我想使用Ruby代码和joins和includes等方法选择以下Rails查询:
SELECT * FROM school INNER JOIN students ON students.school_id = schools.id LEFT OUTER JOIN books ON books.student_id = students.id
我尝试了以下方法:
School.joins({:students => :books}).all
但这并没有考虑到那些没有任何书籍的学生。如何解决这个问题?
3条答案
按热度按时间jyztefdp1#
不幸的是,您的Ruby on Rails旧版本不支持
left_outer_joins
。但是你仍然可以用字符串语法手动定义joins,像这样:顺便说一句,你使用的是一个过时的、未经维护的Ruby on Rails版本。Rails
4.1.6
在大约7年前就已经寿终正寝了,现在有几个well-known security vulnerabilities。我强烈建议您将应用程序升级到最新版本的Ruby on Rails。wecizke32#
试试看
6jjcrrmo3#
可以按如下方式使用左连接