我的数据库结构如下:
我有具有课时的计划时间。每个计划时间都有一个与之关联的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;
答案 0 :(得分:0)
您可以使用子查询,但在您的示例中,您将文字格式与列中的值混合,这将无效。通常最好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;