2013-02-02 53 views
0

说我有一个表的朋友MySQL的循环或嵌套查询

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

@AshwinMukhija首先我生成了一个朋友列表。然后在PHP中,我循环遍历它们并为它们的活动做了单独的查询,但由于它不是一次全部选中它们,所以结果只会将事件按时间顺序排列(每个用户的时间戳),而不是整体。 – user1852176

回答

1

post_id | post_title | post_message | user_id |时间戳 - 表_A

update_id |标题|用户ID |时间戳 - 表-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.post_id将让你的所有从表A中的列。

您可以通过添加LIMIT子句来计算结果的数量。

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

更新

把你的IN子句中所需要的用户ID,如果你想限制的朋友。如果不删除where子句,那么您可以无限制地获得所有朋友的更新。您可以通过您需要的任何栏目进行订购。你可以做ADER BY A.user_id,A.post_id,甚至可以有多个列

+0

因此,我可以将IN子句更改为我的朋友列表的嵌套查询? – user1852176

+0

这取决于您的要求。如果你想限制朋友,把你需要的用户ID放在IN子句中。如果不删除where子句,那么您可以无限制地获得所有朋友的更新。 – Techie

+0

是的,您可以在IN子句中编写子查询 – Techie