2014-07-22 35 views
0

我正在为我的网站创建一个新闻订阅源,您正在关注的用户的帖子,我想知道什么是正确的语法来添加额外的条件到我的SQL语句,以显示您自己的帖子在这种饲料也,一切我都试过导致一个错误,这是我当前的查询:MySQL在JOIN语句中的额外条件

 SELECT posts.* 
     FROM posts 
INNER JOIN follow 
     ON posts.uid = follow.following_id 
     WHERE follow.follower_id = '$myUser' 
    ORDER BY posts.id DESC 
     LIMIT 10 

那么,如何将添加一个条件也将显示$ MYUSER变量的UID的职位?

编辑:

表结构:

帖子:

id | uid | message | date_posted 

如下:

id | follower_id | following_id 
+0

如果您有任何机会可以分享您当前查询的结果集,可能有助于了解我们可以如何扩展它。 – AdamMc331

+0

我不明白这是必要的吗?我需要的就是添加另一个例外,以便用用户自己的ID以及他们所关注的人员返回帖子。 – SigmaDanny

+0

也许不是,我只是好奇。我分享了一个答案,你在where子句中尝试了一个OR语句吗? – AdamMc331

回答

1
SELECT  posts.* 

FROM  posts 
INNER JOIN follow ON posts.uid = follow.following_id 

WHERE  follow.follower_id = '$myUser' 
      OR 
      posts.uid = '$myUser' 

ORDER BY posts.id DESC LIMIT 10 
+0

它不应该是OR吗? – SigmaDanny

+0

你可以标记它作为答案,如果它帮助你:) – Torrezzzz

+0

是的,它应该是OR ... – MattRogowski

1

这将是很难说没有你的数据库结构的概述,但一个好的开始将是将联接改为左联接,并添加一个条件来检查我在帖子表中假设的自己的ID。所以,也许:

SELECT posts.* FROM posts LEFT JOIN follow ON posts.uid = follow.following_id WHERE (follow.follower_id = '$myUser' OR posts.user_id = '$myUser') ORDER BY posts.id DESC LIMIT 10

这可能是地方开始。

+0

用这个没什么区别,还是只显示我以下的人的帖子,不是我自己的。 – SigmaDanny

+0

就像我说的,我们真的需要某种数据库结构。查询的第二部分只需要检查存储谁创建帖子的ID的位置。 – MattRogowski

+0

我将用结构更新我的问题,我认为从查询中可以理解。 – SigmaDanny

1

我相信你想要使用OR子句,所以你会收到任何帖子从追随者或用户。如果你使用了AND,它会返回一个帖子,其ID和追随者以及用户,这可能不会返回任何内容。

所以这个:

SELECT posts.* FROM posts INNER JOIN follow ON posts.uid = follow.following_id WHERE follow.follower_id = '$myUser' ORDER BY posts.id DESC LIMIT 10 

将成为:

SELECT posts.* FROM posts INNER JOIN follow ON posts.uid = follow.following_id WHERE follow.follower_id = '$myUser' OR posts.uid = '$myUser' ORDER BY posts.id DESC LIMIT 10 

不幸的是,我现在不能测试此权利,但我希望,如果它不工作,它至少有助于点你在正确的方向。

+0

似乎没有任何区别,但感谢回复。 – SigmaDanny

+0

对不起,我似乎无法弄清楚这一点。让我知道你是否曾经得到过解决方案,但我会把它留在我的脑后。 – AdamMc331