多表加入,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
答
将这项工作查询?
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”当前登录用户)
为什么你在哪里,并在同等条件下开启JOIN条件? –
您可以显示样本数据和期望的结果吗?我不知道你在做什么,或者可能是什么问题。作为一个侧面说明,你的'WHERE'子句是多余的,可以删除。 – Siyual
那好吧我不会太好加入声明,但在where子句中相同条件上是为了显示,如果连接ID匹配 – sisco