基于子集合的最大值查询记录



正如标题所说,例如,我们有一个库系统,其中有两个表BooksRentalRecord,它们具有一对多关系。看起来像

Book1
--name
--RentalRecords
----record11
----record12
Book2
--name
--RentalRecords
----record21
----record22
----record23
----record24

每条记录包含2个时间戳,用于租用日期和返回日期

我想查询一下过去两周没有出租的书。我是Ruby的新手,如果不使用多个查询,我想不出任何方法可以做到这一点。

有时使用两个查询是可行的选择。如果您更喜欢构建单个查询,请使用类似的方法

Book.joins(:rental_records) .where("max(rental_records.created_at) < ?", 2.weeks.ago)

需要注意的事项:

  • 您需要显式地联接所需的表(但要使用关联名称)
  • 可以在Rails where语句中使用纯字符串
  • 您可以将Ruby值绑定到这样一个字符串中的问号

如果您的查询无法控制,或者您不喜欢使用这样的纯SQL字符串,那么请查看gem scroll。它为RubyonRails提供了一个成熟的SQL代数。

HTH

最新更新