[英]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.