2011-05-20 173 views
2

嘿,大家好。所以,我爲我的一個項目創建了這種社交網絡腳本,並且我需要它顯示類似於Facebook feed的新聞源,也就是顯示你的朋友帖子和你自己的帖子......但是用我的技術,它只顯示朋友後。PHP MySQL查詢JOIN幫助

我的查詢如下:

SELECT 
       * 
      FROM 
       ajee_friends 
      JOIN 
       ajee_wall 
      ON 
       ajee_friends.fid = ajee_wall.uid 
      WHERE 
       ajee_friends.uid = '$this->uid' 
+0

@Ikke他想顯示好友帖子和他自己的帖子,這隻顯示他的好友帖子。 – martynthewolf 2011-05-20 08:11:35

+0

'選擇 * FROM ajee_friends JOIN ajee_wall ON ajee_friends.fid = ajee_wall.uid AND ajeee_firends.fid =這個 - > UID WHERE ajee_friends.uid = $這個 - > uid''如果得到它right – 2011-05-20 08:11:54

+0

我會嘗試skowron-line-s的方式,問題是,它沒有顯示我自己的帖子。 – CodeInACan 2011-05-20 08:13:20

回答

2
SELECT * 
    FROM ajee_wall w 
    WHERE w.uid IN 
     (SELECT fid 
      FROM ajee_friends 
      WHERE uid = $this->uid 
     ) 
UNION ALL 
    SELECT * 
    FROM ajee_wall w 
    WHERE w.uid = $this->uid 
+0

謝謝@ypercube,非常感謝。像魅力一樣工作! – CodeInACan 2011-05-20 08:36:06

+1

@Asko:@Zoolway的答案是相同的(並且更短)。只要檢查你的數據庫中哪一個運行得更快(如果這是個問題)或保存在某個地方。 – 2011-05-20 08:40:48

+0

我不知道,他們對我來說都很快。非常感謝大家! – CodeInACan 2011-05-21 07:04:48

5

如果你希望你的朋友在牆上,你自己可以做到這一點(在我看來更具可讀性的子查詢):

SELECT * 
    FROM ajee_wall w 
WHERE w.uid IN (SELECT fid FROM ajee_friends WHERE uid = $this->uid) 
    OR w.uid = $this->uid 
+1

當然,你會想限制的數量,並添加像日期條件。但這應該是基本的。 – ZoolWay 2011-05-20 08:18:53

0

我認爲你可以使用UNION ALL ... 類似,

SELECT * FROM ajee_friends UNION ALL SELECT * FROM ajee_wall

它會顯示你的所有帖子和你的朋友的。你可以讓它只顯示幾行限制。