多表加入,facebook像新闻墙

问题描述:

好吧,我正在创建一个类似于Instagram的社交网站。所以我想从db中获取帖子,但只显示来自当前登录用户跟随Instagram的用户的帖子。我试过使用一个PHP连接,但它没有工作,虽然我认为我的查询是错误的,因为它带来了错误的结果。请任何答案,这将是很好的,因为它也会帮助其他人。这是我试图做的,但不知道哪里错了。多表加入,facebook像新闻墙

$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(); 

我有两个表。一个是用户连接的connections2,另一个是postfeedback的newsfeeds表。

这是我的分贝 这一个用于连接表的图像 this is where all followed people would be 这一个饲料表 This is the post table

+0

为什么你在哪里,并在同等条件下开启JOIN条件? –

+0

您可以显示样本数据和期望的结果吗?我不知道你在做什么,或者可能是什么问题。作为一个侧面说明,你的'WHERE'子句是多余的,可以删除。 – Siyual

+0

那好吧我不会太好加入声明,但在where子句中相同条件上是为了显示,如果连接ID匹配 – sisco

将这项工作查询?

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; 

但是,你为什么检查连接表,你为什么要检查它的两个用户?检查当前登录用户的newsfeed表是否更容易?除非是误解你的连接表,这可能是工作:

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; 

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

+0

感谢您的回复,但我检查连接表,以显示从与当前登录的用户,并在用户发布仅连接用户发布。 – sisco

+0

我明白了。我输入的第一个查询是否工作? – bbrumm

+0

谢谢但第一个查询不起作用。当我做了一个数与它,它给了我5而不是2 – sisco