2012-04-30 5 views
0

私のデータベースの構造は次のとおりです:postgres 9.1のoverlaps節に副選択することはできますか?

私はclasstimeを持つscheduletimesを持っています。それぞれのscheduletimeには、関連するtclassがあり、持続時間を持ちます。私は通常、ポストグルでオーバーラップ比較を使用しているので、これが可能かどうかわからないので、通常は何らかの種類の結合を使用して継続時間を取得します。クエリが...次のようになります

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

次の時間を、例えば、テーブルを提供し、あなたのサンプルクエリを作り上げるにはより多くの世話をしてみてください。あなたのテーブル名はクエリの一部と別のものと一致しません。あなたの時間リテラルは正しいフォーマットではありませんので、あなたが本当に意味するものを整理するのに役立つ人に大きな負担をかけています。 – kgrittn

答えて

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; 
関連する問題