Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重新编写SQL查询并转换为ActiveRecord_Sql_Activerecord - Fatal编程技术网

重新编写SQL查询并转换为ActiveRecord

重新编写SQL查询并转换为ActiveRecord,sql,activerecord,Sql,Activerecord,我在重新编写SQL查询并将其转换为ActiveRecord查询时遇到了一些困难 假设我有一个表resources,它提供了由id标识的资源列表(并包含其他属性) 假设我还有一个表reservation\u slots,该表将这些资源上的预订列为一小时时段,并带有以下属性:id、start\u datetime、reservation\u id,以及resource\u id(其中引用了resources.id)。资源上的多小时预订在此表中将有多行 我想检索所有“不可用”时间段的列表:start\

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

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

假设我还有一个表
reservation\u slots
,该表将这些资源上的预订列为一小时时段,并带有以下属性:
id
start\u datetime
reservation\u id
,以及
resource\u id
(其中引用了
resources.id
)。资源上的多小时预订在此表中将有多行

我想检索所有“不可用”时间段的列表:
start\u 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
  )
)

有没有更简单或更有效的方法来表达这个查询?如果where子句中没有大量原始SQL,我如何将其作为一个
ActiveRecord
查询来编写呢?

在询问之前一定要先查找,谢谢链接@hd1,但它没有回答我问题的第一部分(重新编写SQL),而且我熟悉嵌套AR查询时提到的技术。我想这可能是一个更好的回答这个问题的地方。