2010-08-25 63 views
3

好吧,现在我正在开发一个包含大量事件对象的程序。每个事件对象都有一个开始时间和结束时间(都是全部时间戳)。很多事件都是连续的(一个事件的endTime与下一个事件的startTime相同),表明这两个事件是连续发生的。 如果我将所有事件存储在SQLite或MySQL表中,是否可以查询每组连续事件?在SQL中选择连续事件集

说我的表看起来像这样。

id title   start_time   end_time 
---------------------------------------------------------- 
1 Happy Time  4/3/2010 10:00:00 4/3/2010 13:00:00 
2 Happier Time 4/3/2010 13:00:00 4/3/2010 18:00:00 
3 Good Time  4/4/2010 18:00:00 4/4/2010 19:00:00 
4 Gooder Time 4/4/2010 19:00:00 4/4/2010 22:00:00 
5 Sad Time  4/6/2010 16:00:00 4/6/2010 20:00:00 

我希望能够查询这个表,看到ID 1和2是连续的,ID 3和4是连续的和id 5 ...邻接本身。

我不知道从哪里开始的原因是因为每当我使用SQL查询时,结果都会作为单独的行返回。结果中的一行绝不是子分组的一部分。

如果您有任何问题随时发表评论。谢谢!

+0

你保证事件是连续的,或将一些是重叠的?在所有情况下,您对此有何期望?你在寻找可能的连续事件,或者只是正确地对它们进行排序? – Jon 2010-08-25 17:25:05

+0

重叠 - 没有重叠事件。在输入数据之前确保。 结果 - 我正在搜索连续事件,因此我可以在该块上执行各种操作。现在,我正在专注于查找连续块的总持续时间。 – 2010-08-25 17:29:11

回答

2
SELECT a.id, a.title, a.start_time, a.end_time, b.id, b.title, b.start_time, b.end_time 
FROM TABLE1 a, TABLE1 b 
WHERE a.start_time = b.end_time 

编辑:此基础上改装的附加信息:

SELECT a.id, a.title, a.start_time, a.end_time, b.id, b.title, b.start_time, b.end_time 
FROM TABLE1 a left join TABLE1 b ON a.start_time = b.end_time 
+0

这个查询唯一的问题是,它留下了没有任何其他事件连续的事件。我也想选择那些。你认为最好的方法是什么? – 2010-08-25 18:20:38

+0

根据新信息添加了第二条SQL语句。 – Russ 2010-08-25 19:31:03