2013-05-11 37 views
1

即时通讯学习各种不同的事情,所以要做到这一点即时通讯建立自己一个小社交网站,并到达那里。我只剩下几件事情要做,其中一件事就是活动/新闻提要或任何你想称之为的东西。它足够简单,可以在您的个人资料Feed上显示自己的帖子。但在索引页上它将是你自己的帖子加上你的朋友的帖子,这就是我正在努力的。首先我有一张friends的表格,其中有user_one & user_two列,如果你的朋友有好的话,如果你的号码在其中一个,另一个用户在另一个。我本来试图把由几个不同的用户做出的职位查询是sql查询并发症的活动/新闻饲料在社交网络上

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或user_two在friends表= $ _SESSION ['user_id']。这应该得到由同一行(在朋友表中)作为$ _SESSION ['user_id']的其他user_id所做的任何发布...

但问题是发生了什么是它拉起结果是,不是我希望的那样只是一个职位,而是反复重复。我认为这是由于它拉起了双倍的结果,因为它像..say我用户1 ..和用户2和3是我的朋友,以及它为用户3拉出一个结果为用户2的一个结果。 ..

我想要的只是拉起一个结果显示在我和我的'朋友'张贴的用户1的活动饲料...可以有人建议我如何最好的做这个ID?如果有人能理解我笑......

欢呼

理查德

+0

为什么'friends'有*三个* USER_ID列:

如下我会写这个查询? – 2013-05-11 14:11:53

回答

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`) 
      )