1

我目前正在学习各种不同的东西,所以要做到这一点,我目前正在为自己建立一个小型社交网站并让它到达那里。我只剩下几件事要做,其中之一是活动/新闻提要或您想要的任何名称。它很简单,可以在您的个人资料供稿中显示您自己的帖子。但是在索引页面上,它将是您自己的帖子以及您朋友的帖子,这就是我正在努力解决的问题。首先,我有一个表,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'] AND where user_one OR user_two in the friends table = $_SESSION['user_id']。这应该得到 OTHER user_id 与 $_SESSION['user_id'] 位于同一行(在朋友表中)的任何帖子...

但问题是正在发生的事情是它产生了一个结果,而不是像我希望的那样只是一个帖子,它会重复出现。我认为这归结于这样一个事实,即它获得了双重结果,因为它就像 ..say im user 1 .. 并且用户 2 和 3 是我的朋友,那么它为用户 2 提取了一个结果,为用户 3 提取了一个结果。 ..

我想要的是只提取一个结果以显示在我和我的“朋友”发布的用户 1 的活动提要上......有人可以建议我如何最好地做到这一点吗?如果有人能理解我,哈哈...

干杯

理查德

4

1 回答 1

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`)
              )
于 2013-05-11T16:57:43.673 回答