2012-01-14 54 views
0

我正在開發一個小型社交網絡項目,它將允許用戶彼此連接,類似Facebook的「朋友」理念。該網站具有獨特的功能,可以與其他網站區別開來,因此請對社交網絡市場飽和的評論進行評論。PHP - 比較兩個MySQL表中的Connections/Feed

每次用戶連接朋友時,它都會添加到MySQL DB中的「連接」表中。每次用戶發送禮物,邀請或其他內容時,都會將其添加到「Feed」表中。

我需要能夠根據「連接」表中的連接僅顯示來自「Feed」表的朋友的活動。

我的第一個想法是從「連接」表中收集當前登錄用戶的所有連接,並將ID放入數組中。然後遍歷該數組,檢查每個ID與「Feed」表中的活動。然而,這似乎不是一個合理的方式來做到這一點。它還會將每個用戶的所有活動組合在一起,而不是按照發生的順序進行分組。

任何想法?

回答

2

東西沿直線前進的線路連接:

SELECT feed.* 
FROM connections 
JOIN feed 
    ON connections.friend_id = feed.user_id 
WHERE connections.user_id = <insert id of user> 
+0

哦,太棒了!我甚至沒有想過這件事。謝謝! – 2012-01-14 18:51:10

0

你可以在MySQL中使用IN子句,試試這個..

select * 
from feeds f 
where user_id IN (
    select friends_id 
    from connections 
    where user_id = $user_id 
) 

OR

select * 
from feeds f join connections c 
on c.friends_id = f.user_id 
where c.user_id = $user_id 

連接是一種快於子查詢,也不要忘記在相關列(friends_id,user_id)上添加索引。