2013-05-11 35 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`) 
      )