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

标签 php mysql sql facebook-wall

目前我正在社交网络上工作。我决定建立 friend 关系(像 FB 那样)而不是关注用户(像 TW 那样),这就是我的问题。

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

Friends Table

Post Table

Users Table

我想这样做,以便如果用户没有 friend (或只是发送了邀请[ friend 表中的friends_type == 1]),则仅显示他的帖子。

我的想法是:从用户、帖子、 friend 中选择*,其中friends_status=4,但是当用户有 friend 时,我希望看到他和他的 friend 的帖子。

当然,这是我所做的 SQL 查询:SELECT * FROM posts、users、friends WHERE user_id=post_author AND Friends_status=4 AND (friend_friendid=user_id ORfriend_userid=user_id) ORDER BY post_id DESC.

基本上,我想实现 Facebook 主页上的功能(永无休止的时间线,你可以滚动和滚动)。我的问题是:如何构建该查询?

最佳答案

这是一种方法,使用子请求来查找 friend :

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
   )

关于php - SQL 查询问题(使用 3 个表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47850882/

相关文章:

sql - 在 Excel VBA 中检查对象是否为 Null

php - PHP 中的变量函数是如何工作的?

php - AJAX 不解析 PHP 中的数据

mysql - 如何从第三个关系表中获取总和

mysql - 选择该列尚未返回现有结果的所有行

mysql - Sqlyog 错误 1452

php - 根据点击的链接显示mysql中的具体记录

php - jquery 不适用于每个 href 元素

c++ - 当值 >=16 时,ResultSet ->getString() 崩溃

php - 使用php更新sql表