重写SQL查询并转换为ActiveRecord

时间:2013-06-16 22:30:56

标签: sql activerecord

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

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

假设我还有一个表reservation_slots,它将这些资源上的预订列为一小时广告位,其中包含以下属性:idstart_datetimereservation_id和{{ 1}}(引用resource_id)。对资源的多小时预留将在此表中包含多行。

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

resources

是否有更简单或更有效的方式来表达此查询?如何在where子句中没有大量原始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 ) ) 查询?

0 个答案:

没有答案