SQL查询问题(使用3个表)

问题描述 投票:0回答:1

目前我正在研究社交网络。我决定结交朋友关系(就像FB一样),而不是关注用户(就像TW那样),这就是我的问题。

所以,我有3个表(用户,帖子,朋友)。

Friends Table

Post Table

Users Table

我想这样做,以便如果用户没有朋友(或只是发送了邀请[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在主页上的内容(永不停止的时间轴,你可以滚动和滚动)。我的问题是:如何构建该查询?

php mysql sql facebook-wall
1个回答
0
投票

这是一种使用子请求查找朋友的方法:

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
   )
© www.soinside.com 2019 - 2024. All rights reserved.