0

我在重写 SQL 查询并将其转换为ActiveRecord查询时遇到了一些困难。

假设我有一个 table ,它提供了一个由(并包含其他属性)resources标识的资源列表。id

假设我还有一张表reservation_slots,其中将这些资源的预订列为一小时时段,其属性为:、、、和id(引用)。资源的多小时预留将在此表中具有多行。start_datetimereservation_idresource_idresources.id

我想检索所有“不可用”时隙的列表:start_datetimes所有资源(在resources表中)已经被保留。我可以使用以下 SQL 检索这样的列表:

select start_datetime 
from reservation_slots
where not exists (
  select r.id 
  from resources r 
  where r.id not in (
    select resource_id
    from reservation_slots rs
    where rs.start_datetime = reservation_slots.start_datetime
  )
)

有没有更简单或更有效的方式来表达这个查询?ActiveRecord在 where 子句中没有大量原始 SQL 的情况下,我如何将其编写为查询?

4

0 回答 0