在我的应用程序中,我想在活动源中显示10-20种不同的操作:
所有内容都存储在mysql数据库中。
如何获取最新的操作/事件并将其显示在活动源中?
在我的Android应用程序中,我有一个用于活动源的ListView和一个描述这些不同类型的操作的ENUM对象,因此列表视图可以被提供不同的事件集并为每个事件显示不同的布局,但我不知道如何获取数据库中的最新操作以提供活动。
我想要做的是每次添加主题时,每次用户注册,或者用户执行某些操作然后从该表中获取最新的10个事件时,在mysql的EVENTS表中插入ENUM EVENT将它发送到应用程序,但如何将该表中的某些事件链接到数据库中发生的事情?
我从未学过如何创建一个活动而且我即兴创作,但我不知道我是否在正确的道路上,如果我是,如何实现这个逻辑。
PS:我有一个非常基本的MySQL未定,所以要温柔:)答案 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;
MySQL初学者的一个很好的教程是w3school