0

我的数据库结构如下:

我有一个有上课时间的时间表。每个 scheduletime 都有一个与之关联的具有持续时间的 tclass。我通常会使用某种连接来获取持续时间,但是,由于我在 postgres 中使用重叠比较,我不确定这是否可行。查询看起来像这样......

Select (scheduletimes.classtime, scheduletimes.classtime + interval 
(select duration from tclasses where tclass.id = scheduletimes.tclass_id) minutes) OVERLAPS 
(06:50:00, 07:20:00) from schedules where
day = 1 and
schedule_id = 14;
4

1 回答 1

1

您可以使用子查询,但在您的示例中,您将文字格式与列中的值混合在一起,这是行不通的。通常最好JOIN不要使用子查询,所以你可能想要这样的东西:

SELECT
    scheduletimes.*,
    (scheduletimes.classtime, scheduletimes.classtime
         + (interval '1 minute' * tclasses.duration))
       OVERLAPS (time '06:50:00', time '07:20:00')
  FROM scheduletimes
  JOIN tclasses ON tclasses.id = scheduletimes.tclass_id
  WHERE day = 1
    AND schedule_id = 14;
于 2012-04-30T04:28:26.133 回答