我正在構建一個應用程序,用於在codeigniter和mysql中與android共享事件。我想要做的是在android應用程序中顯示事件列表並顯示限制,比方說每個查詢只有10個結果,然後我可以執行「加載更多」任務。實現基於日期時間的twitter類時間線查詢事件應用程序
如果我們談論Twitter的時間表,讓我們說的狀態表有以下幾列(PS我做了這些):
- ID(考慮這是通過自動遞增的主鍵)
- date_post
- 鳴叫
如果用戶發佈的tweet,旁邊的自動增量值自動分配的ID,並與當前時間分配datetime列,所以鳴叫是有序的正確此外,更新的推文會插入更大的ID中。就這樣,以顯示與極限20結果時間軸加載的每個時間,我們從舊鳴叫加載到較新的一個,我們可以使用下面的查詢(CMIIW):
SELECT * FROM TWEETS WHERE ID > last_id_loaded AND date_post >= last_date_loaded ORDER BY ID ASC LIMIT 20;
與last_id_loaded是參數我們根據加載的最後一條推文發送;如果是第一次,則發送0,與last_date_loaded參數相同。
現在讓我們回到我的應用程序。我有以下的列的表稱爲事件:
- ID(主鍵,自動遞增)
- 名(事件的名稱)
- DATE_START(日期時間它的活動將舉行)
- 等
當用戶創建一個事件,該ID將分配有自動遞增的未來價值,但不像我之前提到的鳴叫表,該事件不排序依據日期時間,因爲較大的ID沒有按」 t表示新手r事件,反之亦然。例如:
----- | ----------- | -------------
id | name | date_start
----- | ----------- | -------------
1 Event A 2013-05-26 13:13:00
2 Event B 2013-05-23 09:00:00
3 Event C 2013-05-27 10:00:00
4 Event D 2013-05-27 10:00:00
5 Event E 2013-05-27 10:00:00
6 Event F 2013-05-28 08:00:00
7 Event G 2013-05-31 13:13:00
8 Event H 2013-05-29 09:00:00
9 Event I 2013-05-29 08:00:00
10 Event J 2013-05-30 13:13:00
如果我們順序基於所述DATE_START柱,它應該是: 事件B,事件A,事件C,事件d,事件E,....,事件G.
正如我們所看到的,有3列具有相同的date_start值:事件C,D和E. 如果我想將事件從舊的加載到較新的,每個查詢的限制僅爲3,這是我期望返回的事件B,A,C,目前我用以下查詢:
SELECT * FROM EVENTS WHERE DATE_START >= last_date_retrieved ORDER BY DATE_START ASC, ID ASC
但是,那麼我怎樣才能確保下一個查詢會導致下一個值呢?我的意思是之前的查詢是由此產生的: B,A,C with last date_start是2013-05-27 10:00:00
如果我使用前面的查詢,它會產生C,D,E,而不是D ,E和F就像我預料的那樣。
我在這裏失蹤了什麼? 我準備好得到一些建議。謝謝。