2011-06-09 128 views
0

我在寫Facebook應用程序。當用戶添加應用程序時,我用user_id和name在用戶表中插入一條記錄。當用戶刪除這個應用程序時,我刪除了爲該用戶創建的行。這樣我就在我的用戶表中使用了當前正在使用我的應用程序的所有用戶。在應用程序頁面的某處,我顯示上次用戶訪問應用程序時訂購的用戶列表(我有更新的日期時間字段)需要數據庫設計建議

當前顯示所有按上次活動排序的用戶。 我希望能夠做的是按照上次活動排序顯示此列表,但首先顯示與當前用戶成爲朋友的用戶,然後顯示其餘用戶。

因此,舉例來說,如果我有3個用戶:

user_id | name | last_activity 
------------------------------------ 
1  | Foo | 09.06.2011 09:12:00 
------------------------------------ 
2  | Bar | 09.06.2011 09:11:00 
------------------------------------ 
3  | Dude | 09.06.2011 09:10:00 

因此,如果當前用戶ID是3和他是朋友與2的話,我想我的名單是這樣(不包括當前用戶):

- Bar 
- Foo 

因爲即使Foo具有比Bar更近的活動,Bar因爲與當前用戶的朋友而具有優先級。

因此,任何想法如何我應該如何存儲這些用戶之間的友誼關係,如何在新用戶加入應用程序時更新它們(即用戶4是3的朋友加入應用程序),然後熱獲取整個用戶列表,但按此標準排序?

謝謝。

回答

0

把所有這一切都放在一個查詢中將是艱難的,當然可能。

但我建議你選擇所有的朋友ID。

然後你選擇每個用戶OREDERed BY last_activity,並在WHERE部分聲明NOT IN([friends ids])。

+0

因此,任何ideea是查詢長度的限制?至於如果有1000個朋友需要選擇,我需要做的是不在(這個1000個ID的列表)? – daniels 2011-06-09 12:00:35

+0

通過使用存儲過程和/或數據庫端的變量,您可以將它們保留在那裏。也......實際上,如果你想知道類似的東西,那麼給你的「算法」,這意味着你想在你的用戶列表中顯示超過1000個條目。你明白我的觀點了嗎? – Raffael 2011-06-09 12:05:38