1

想象一个用户在随机日期发布内容的基本网站。系统使用 mysql-php 并将每个帖子存储在一个名为 tablePost 的表中,其中有一列存储日期(或时间)。请注意,用户可以在一天内发布多个帖子。我想要实现的是能够获取用户发布的最后 4 天(甚至更多天)的日期。还要获取发布信息(postid、posttext 等)。示例输出为:
- 2012-04-25(3 个帖子,postinfo...)
- 2012-04-12(2 个帖子,postinfo...)
- 2011-09-12(33 个帖子,postinfo...)
- 2011-03-04(10 个帖子,发布信息...)

我可以想象两种解决方案:

1) 仅使用 tablePost 表,通过 php 遍历条目并获取所需数据

2)创建另一个表,调用tableActiveDays。当用户发布时,可能使用 INSERT IGNORE 插入条目(userId,dateDay)或检查之前是否未插入。因此,每个 (userId, dateDay) 都是唯一的。这样,如果我想获取最后 4 个活动天数,我可以使用简单的 select ... order by ... limit by 4 查询。

我的问题是:
- 任何其他方式来完成这项任务?
- 实现这一目标的最有效方法是什么?

4

1 回答 1

0

Create INTEGER field and call it "dt_timestamp". When user post message save in "dt_timestamp" result of time() function.

UPDATE:
If you have registered users then add field with INTEGERtype, call it last_activity. When user post something update this field with time(). Then use this query:

SELECT pt.* FROM post_table pt JOIN users_table ut ON ut.id = pt.user_id WHERE pt.dt_timestamp >= ut.last_activity - 86400 * 4 AND ut.id = %needed_user_id%;

users_table has field id - user's id. post_table has field user_id - field value from users_table.

Using DATETIME is much slower then just integer timestamp.

于 2012-05-01T11:07:55.647 回答