多表加入,facebook像新闻墙

时间:2017-08-30 19:20:04

标签: php sql join pdo

好的我正在创建一个类似于Instagram的社交网站。所以我想从数据库中获取帖子,但只显示当前登录用户关注的帖子,就像Instagram一样。我尝试过使用php加入并且它没有用,但我认为我的查询错误,因为它带来了错误的结果。请回答这个问题会很好,因为它也可以帮助别人。这是我尝试过的,但不知道哪里出错了。

$query = $database->prepare("SELECT n.*, c.*, n.id AS nid, c.id AS cid FROM
              newsfeeds n JOIN connections2 c ON c.user1 = n.userId OR c.user2 = n.userId
              WHERE n.userId = c.user1 OR n.userId = c.user2 ORDER BY nid DESC");
    $query->execute();
我有两张桌子。一个是用户连接的连接2,另一个是用于帖子的新闻源表。

这是我的数据库的图像 这一个用于连接表 this is where all followed people would be 这一个用于feed表 This is the post table

1 个答案:

答案 0 :(得分:0)

此查询是否有效?

SELECT n.id AS nid,
n.userid,
n.news,
n.news_image,
n.access,
n.date,
c.id AS cid,
c.user1,
c.user2,
c.time,
c.status
FROM newsfeeds n
INNER JOIN connections c ON (c.user1 = n.userid OR c.user2 = n.userid)
ORDER BY n.id DESC;

但是,为什么要检查连接表,为什么要检查两个用户?检查当前登录用户的新闻源表是不是更容易?除非误解你的联系表,否则这可能有效:

SELECT n.id,
n.userid,
n.news,
n.news_image,
n.access,
n.date,
FROM newsfeeds n
WHERE n.userid = "X"
ORDER BY n.id DESC;

(将“X”替换为当前登录用户的实际用户ID)