目前我正在研究社交网络。我决定结交朋友关系(就像FB一样),而不是关注用户(就像TW那样),这就是我的问题。
所以,我有3个表(用户,帖子,朋友)。
我想这样做,以便如果用户没有朋友(或只是发送了邀请[friends_type == 1在朋友表中]),则只显示他的帖子。
我的想法是:SELECT * FROM users, posts, friends WHERE friends_status=4
,但当用户有朋友时,我想看看他和他的朋友的帖子。
当然这是我的SQL查询:SELECT * FROM posts, users, friends WHERE user_id=post_author AND friends_status=4 AND (friend_friendid=user_id OR friend_userid=user_id) ORDER BY post_id DESC
。
基本上,我想实现Facebook在主页上的内容(永不停止的时间轴,你可以滚动和滚动)。我的问题是:如何构建该查询?
这是一种使用子请求查找朋友的方法:
select *
from posts
where post_author = {user_id}
or post_author in
(
select friend_friendid from friends
where friend_userid = {user_id}
and friend_status != 1
)