活动源(如FB时间轴):获取数据库中最新操作的逻辑是什么?

时间:2014-01-01 12:26:36

标签: php android mysql

在我的应用程序中,我想在活动源中显示10-20种不同的操作:

  • 用户注册,彼此成为朋友并互相关注
  • 用户注册对象,买卖对象,关注对象
  • 用户注册对象集并将对象添加到对象集。

所有内容都存储在mysql数据库中。

如何获取最新的操作/事件并将其显示在活动源中?

在我的Android应用程序中,我有一个用于活动源的ListView和一个描述这些不同类型的操作的ENUM对象,因此列表视图可以被提供不同的事件集并为每个事件显示不同的布局,但我不知道如何获取数据库中的最新操作以提供活动。

我想要做的是每次添加主题时,每次用户注册,或者用户执行某些操作然后从该表中获取最新的10个事件时,在mysql的EVENTS表中插入ENUM EVENT将它发送到应用程序,但如何将该表中的某些事件链接到数据库中发生的事情?

我从未学过如何创建一个活动而且我即兴创作,但我不知道我是否在正确的道路上,如果我是,如何实现这个逻辑。

PS:我有一个非常基本的MySQL未定,所以要温柔:)

2 个答案:

答案 0 :(得分:1)

我假设你有一个用户表,并且你有一个事件表和一个将用户链接到事件的表,所以试试

SELECT (*|[columns you want]) 
FROM events E
INNER JOIN events_users EU
  ON EU.event_id = E.id
INNER JOIN users U
  ON EU.event_id = U.id
ORDER BY EU.(timestamp) DESC LIMIT 30

没有别名

SELECT (*|[columns you want]) 
FROM events
INNER JOIN events_users
  ON events_users.event_id = events.id
INNER JOIN users
  ON events_users.event_id = users.id
ORDER BY events_users.(timestamp) DESC LIMIT 30

裸露

user (id)
events_users (user_id, event_id, timestamp)
event(id)

答案 1 :(得分:0)

在事件表中定义一个类型字段,该字段对应于每个活动类型,例如

type 1: user registration
type 2: add comment

等。 然后,您可以在表中创建一个字段,用于存储创建/更新条目的当前时间,例如UpdateTime。无论何时创建或更新条目,都要使用当前时间更新UpdateTime字段。然后在获取结果时,执行带有限制的ORDER BY UpdateTime DESC。

SELECT id, userid, name, type, activity ,updateTime
FROM users usr INNER JOIN events ev
ON ev.user = usr.userid
WHERE updateTime > 0
ORDER BY updateTime LIMIT 0,10;

SQLFIDDLE

MySQL初学者的一个很好的教程是w3school