我正在为我的网站创建一个新闻Feed,其中包含您关注的用户的帖子,我想知道在我的SQL语句中添加额外条件的正确语法是什么,在此Feed中显示您自己的帖子,所有内容我试过导致了一个错误,这是我当前的查询:
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 :(得分: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
答案 1 :(得分: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
这可能是一个可以开始的地方。
答案 2 :(得分: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
不幸的是,我现在无法对此进行测试,但我希望如果它不起作用,至少可以帮助您找到正确的方向。