有効なセグメント内の時間を持つイベントを返す SQL クエリを実行する方法を知りたいです。
たとえば、私は2つのテーブルを持っています、
イベント
event_id event_time
0 134
1 434
2 4300
セグメント
segment_type segment_start_time segment_end_time
data1 100 130
data1 200 500
data1 700 8000
veto1 400 440
data2 150 450
data2 4000 5000
veto2 175 200
返すクエリが必要です
event_id event_time
1 434
2 4300
みたいなことを考えていた
SELECT *
FROM event
WHERE
event.event_time > (SELECT segment.segment_start_time FROM segment)
AND
event.event_time < (SELECT segment.segment_end_time FROM segment)
しかし、これは何も返しません。私は何を間違っていますか?
私がやりたい次のステップは、イベントの時間を見つけることです。
'data' セグメントの開始時刻と終了時刻の間 AND 'veto' セグメントの開始時刻と終了時刻の間
最後に、実際には 2 種類のデータ セグメントと拒否セグメントがあります。時間のあるイベントを返したい。
「data1」セグメントの開始時刻と終了時刻の間 AND
「data2」セグメントの開始時刻と終了時刻の間 AND
'veto1' セグメントの開始時刻と終了時刻の間でなく、かつ
「veto2」セグメントの開始時間と終了時間の間ではない
上記の表の例から、必要な出力は次のようになります
event_id event_time
2 4300