我在重写 SQL 查询并将其转换为ActiveRecord
查询时遇到了一些困难。
假设我有一个 table ,它提供了一个由(并包含其他属性)resources
标识的资源列表。id
假设我还有一张表reservation_slots
,其中将这些资源的预订列为一小时时段,其属性为:、、、和id
(引用)。资源的多小时预留将在此表中具有多行。start_datetime
reservation_id
resource_id
resources.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 的情况下,我如何将其编写为查询?