簡體   English   中英

PHP - 比較來自兩個MySQL表的Connections / Feed

[英]PHP - Compare Connections/Feed from two MySQL Tables

我正在開發一個小型社交網絡項目,允許用戶相互聯系,類似於Facebook的“朋友”想法。 該網站擁有自己獨特的功能,使其與眾不同,所以請關注社交網絡市場飽和的評論。

每次用戶與朋友連接時,都會將其添加到MySQL DB中的“Connections”表中。 每次用戶發送禮物,邀請或其他任何內容時,都會將其添加到“Feed”表中。

我需要能夠根據“連接”表中的連接,僅顯示“Feed”表中的朋友的活動。

我的第一個想法是從“Connections”表中收集當前登錄用戶的所有連接,並將ID放在一個數組中。 然后循環遍歷該數組,根據“Feed”表檢查每個ID的活動。 然而,這似乎不是一種合理的方法。 它還將每個用戶的所有活動組合在一起,而不是按順序組合。

有任何想法嗎?

沿着直接連接的方向:

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

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

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

要么

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

聯接比子查詢更快,也不要忘記在相關列(friends_id,user_id)上添加索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM