2010-08-25 64 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