0

我正在为我的网站创建一个新闻提要,其中包含您关注的用户的帖子,我想知道在我的 SQL 语句中添加额外条件的正确语法是什么,以便在此提要中也显示您自己的帖子,我尝试过的一切导致错误,这是我当前的查询:

     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
4

3 回答 3

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
于 2014-07-22T13:12:12.993 回答
1

如果没有对您的数据库结构的概述,就很难说,但一个好的起点是将联接更改为 LEFT 联接,并添加一个条件来检查您自己的 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

这可能是一个开始的地方。

于 2014-07-22T13:12:20.860 回答
1

我相信您想为此使用 OR 子句,因此您将收到来自关注者或用户的任何帖子。如果你使用 AND,它会返回一个 id 为 follower AND the user 的帖子,这可能不会返回任何内容。

所以这:

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

不幸的是,我现在无法对此进行测试,但我希望如果它不起作用,至少可以帮助您指出正确的方向。

于 2014-07-22T13:17:09.160 回答