2011-06-09 131 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