gpt4 book ai didi

php - 查询类似 Facebook 的新闻源的数据

转载 作者:行者123 更新时间:2023-11-29 09:23:17 24 4
gpt4 key购买 nike

我有一个社交网站,用户可以在其中更新他们的心情、个人资料并添加照片。

我目前正在将所有更新记录在名为“update_log”的表中,其结构如下:

update_id int (auto), 
userid int,
update_type int (1=profile, 2=photo, 3=mood)
pictureid int
mood_a int
mood_b int
mood_c int
update_time int

个人资料更新记录:(自动), 1, 1, 0, 0, 0, 0, 1239003781

照片更新记录:(自动), 1, 2, 11544, 0, 0, 0, 1239003781

心情更新记录:(自动), 1, 3, 0, 1, 490, 70, 1239003781

对于照片记录,有一个相应的表 userphotos,其中保存标题和文件名/位置数据

对于心情,有一个心情查找表,其中包含心情描述(即,我很懒=\)

我需要做的是查询此数据以显示在用户的个人资料页面上,它将显示他们最喜欢的用户在过去 x 小时的事件中的此提要。

我遇到的问题是,如果用户在半小时之内上传了五张照片,我只想将其作为提要中的一行,而不是每张照片上传的条目。

个人资料更新也是如此。

我需要查询数据,以便用户会看到如下内容:

user x updated their mood! (I'm tired) on Apr 4, 2009 10:35 pm
user y uploaded x new photos on April 4, 2009 10:20 pm
user x updated their profile on April 4, 2009 10:15 pm

如何根据所有记录(假设相隔一小时)将照片更新分组到查询中返回的一条记录中?

有没有一种方法可以通过一个查询来完成此操作?

谢谢!

最佳答案

你想要类似的东西

SELECT * FROM update_log WHERE update_time > NOW() - 30 MINUTES;

30分钟是你回顾过去的时间。

我假设您只需要知道如何在单个查询中返回过去 30 分钟的更新。

如果您尝试将所有照片分组为 30 分钟的 block ,例如最近两天的照片,您最好更改数据库结构并创建一个 photo_group 表 [包含主键、用户 ID、和创建时间]并向 update_log 表添加 group_id 列。

添加新照片时,请检查该用户在过去 30 分钟内创建的现有群组。

SELECT * FROM photo_group WHERE user_id = XXX AND created > NOW () - 30 MINUTES;

如果不存在,则创建它。通过将 photo_group 表的主键添加为 update_log 中的 group_id,将照片链接到最新的照片。

当您稍后检索行时,您可以使用脚本语言按 group_id 对它们进行分组。

此方法的缺点是您的分组结构以后将很难修改,因为当您更改创建新组的规则时,以前的条目将按其旧组进行分组。

如果您想在不存储组的情况下执行此操作,则必须通过将照片分组到一个循环中来处理脚本语言中的逻辑,该循环检查照片的创建时间,将以下照片分组到数组中如果它们是在特定时间段内创建的,则执行此操作,或者使用与前一张不相符的最新照片重新开始循环。这比添加新表的开销更大,但以后修改会更容易。

关于php - 查询类似 Facebook 的新闻源的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/721716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com