我想知道如何运行一个返回事件的 SQL 查询,该事件的时间在有效段中。
例如,我有两张桌子,
事件
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)
但这只是什么都不返回。我究竟做错了什么?
我想做的下一步是找到事件时间;
在“数据”段开始时间和结束时间之间,而不是在“否决”段开始时间和结束时间之间
最后,我实际上有两种类型的数据段和否决段。我想返回有时间的事件;
在“data1”段开始时间和结束时间之间和
在“data2”段开始时间和结束时间之间和
不在“veto1”段开始时间和结束时间之间,并且
不在“veto2”段开始时间和结束时间之间
所以从我上面的示例表中,我想要的输出是
event_id event_time
2 4300