创建包含人员更新的新闻Feed页面

时间:2012-01-05 11:32:16

标签: php mysql

这是一个mysql表:friends

followed INT, <-- The user's id ( the follower is following him )
followedby INT <-- The follower's id

和表格updates

updateid INT,
updatetext TEXT,
updatetime DATETIME
uid INT

拥有用户ID 2的人登录并希望查看他所关注的用户的更新。 现在,他只跟随3个用户。要选择更新,我可以执行此操作:

SELECT * FROM updates WHERE ( uid=10 , uid=20 OR uid=30 ) ORDERBY updatetime DESC LIMIT 10

问题

我想选择登录用户所遵循的用户,并希望这些用户选择更新。 用户可以有很多朋友。请帮忙。

3 个答案:

答案 0 :(得分:4)

您可以使用子查询和IN()

SELECT * 
FROM updates 
WHERE uid IN(SELECT followed FROM friends WHERE followedby = USERS_ID_HERE) 
ORDER BY updatetime DESC LIMIT 10

答案 1 :(得分:2)

尝试对SQL语句进行以下更新以实现sub-select in the where MySQL Docs子句:

SELECT *
FROM updates
WHERE uid IN (SELECT followed 
              FROM friends 
              WHERE followedby = '$current_user_id')
ORDER BY updatetime DESC
LIMIT 10

$current_user_id是当前登录系统的用户的ID。

答案 2 :(得分:0)

这是一个复杂的问题(“用户可以有很多朋友”部分)。如果您的应用程序变得太大,数据库将无法放在单个服务器上,您将不得不进行分片。那时你会遇到现有架构的问题。

一些大型网站通过为每个用户创建个人“物化”新闻源来解决此问题。

但是,我想,你现在不需要这个。看到其他答案。 : - )