说我有一个表朋友
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?
答案 0 :(得分:1)
post_id | post_title | post_message | user_id |时间戳 - 表_A
update_id |标题| userid |时间戳 - 表_
尝试以下查询
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,甚至可以使用多列