我目前正在学习各种不同的东西,所以要做到这一点我目前正在建立一个小社交网站并且它到达那里。我还有几件事要做,其中一件是活动/新闻提要,或者你想要称之为什么。它足够简单,可以在您的个人资料Feed中显示您自己的帖子。但在索引页面上,它将是你自己的帖子加上你朋友的帖子,这就是我所挣扎的。首先,我有friends
的表格,其中包含user_one
列& user_two
如果您的朋友在其中一个,而另一个用户在另一个用户中,那么您的朋友就好了。我最初尝试拉取几个不同用户发布的帖子的查询是
SELECT * FROM `post`, `friends` WHERE `user_id` = $user_id AND (`friends`.`user_one` = $user_id OR `friends`.`user_two` = $user_id)
从它应该,选择帖子user_id = $ _SESSION ['user_id']的帖子和朋友和朋友表中的user_one OR user_two = $ _SESSION ['user_id']。这应该得到与$ _SESSION ['user_id']在同一行(在friends表中)的OTHER user_id所发布的任何帖子......
但问题是正在发生的事情是它提升了一个结果,而不是像我希望的那样只是一个帖子,它拉起重复。我认为这是因为它提升了双倍的结果,因为它喜欢..say即用户1 ..而用户2和3是我的朋友,它为用户2&提取了一个结果。用户3的一个结果......
我想要的只是提取一个结果显示在我和我的“朋友”发布的用户1的活动源上...有人可以告诉我如何最好地执行此操作吗?如果有人能理解我大声笑......
欢呼声
理查德
答案 0 :(得分:0)
你没有加入这两个表,这就是你得到重复的原因。
我会按如下方式编写此查询:
SELECT *
FROM `post`
WHERE EXISTS (SELECT * FROM `friends`
WHERE (`friends`.`user_one` = $user_id AND `post`.`user_id` = `friends`.`user_two`)
OR (`friends`.`user_two` = $user_id AND `post`.`user_id` = `friends`.`user_one`)
)