【发布时间】:2012-08-09 08:15:39
【问题描述】:
我想知道如何运行一个返回事件的 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)
但这只是什么都不返回。我做错了什么?
我要做的下一步是找到事件时间;
在“数据”段开始时间和结束时间之间 AND 不在“否决”段开始时间和结束时间之间
最后,我实际上有两种类型的数据段和否决段。我想返回有时间的事件;
在“data1”段开始时间和结束时间之间与
在“data2”段开始时间和结束时间之间与
不在“veto1”段开始时间和结束时间之间并且
不在“veto2”段的开始时间和结束时间之间
所以从我上面的示例表中,我想要的输出是
event_id event_time
2 4300
【问题讨论】:
-
不同的片段会重叠吗?
events或segements会有更多记录吗? -
您使用的是什么数据库和版本?
-
片段可能重叠,但只有不同“类型”的片段 - 请参阅下面的评论。我正在使用 SQlite 3.7.13