0

说我有一桌朋友

user_1  |  user_2  

然后,说我想看看这些朋友都在做什么,所以我检查了帖子表和更新表

post_id  | post_title | post_message |  user_id | timestamp

update_id | title | userid | timestamp

我想实现如下逻辑:获取朋友列表,查看生成的朋友列表,看看他们是否添加了任何内容,按最近的活动排序(时间戳)。

Select user_1 from friends where user_2 = '$my_userid'
union
Select user_2 from friends where user_1 = '$my_userid'

//now loop through each of these friends and check the update/post tables to see if they have added anything recently

我可以通过 1 个 MySQL 查询来完成这一切,还是必须将其分解并使用 PHP?

4

1 回答 1

1

post_id | post_title | post_message | 用户 ID | 时间戳 - Table_A

更新ID | 标题 | 用户名 | 时间戳 - Table_B

试试下面的查询

SELECT A.*, B.* FROM Table_A AS A JOIN Table_B AS B ON B.userid = A.user_id
WHERE A.user_id IN (100,101,102) 
ORDER BY B.timestamp DESC;

A.* - 将为您提供表 A 中的所有列。如果您想要特定列A.post_id

您可以通过添加 LIMIT 子句来确定结果数量。

注意:我假设 100,101,102 是生成的用户 ID。您可以在 IN 子句中添加用户 ID。

更新

如果您想限制好友,请将您需要的用户 ID 放在 IN 子句中。如果不去掉where子句,就可以无限制地获取所有好友的更新。您可以按您需要的任何列订购。你可以做 ORDER BY A.user_id , A.post_id, 甚至多列也是可能的

于 2013-02-02T19:35:22.227 回答