0

私のデータベース構造は次のとおりです。

授業時間のあるスケジュールがあります。各スケジュール時間には、期間を持つ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 に答える