我有 3 个表: user_info ,friend_match,posts
用户信息:帐户ID | 用户名
朋友匹配:友谊ID | 朋友1(第一个帐户ID)| friend2 (account_id of 2nd) 好友匹配包含 2 1 和 1 2、1 3 和 3 1。
帖子:post_id | 海报ID | post_message | 发布日期
我如何从用户的朋友和他自己的朋友那里获得帖子?
我已经尝试过了,但它似乎效率低下,而且我遇到了分页问题,因为用户可能或多或少地发布了分页。
SELECT * FROM
(
SELECT p.post_id, p.post_message, UNIX_TIMESTAMP(p.date_posted) as date_posted, u.username FROM posts p
INNER JOIN friend_match fm
ON p.poster_id = fm.friend1
INNER JOIN user_info u
ON u.account_id = p.poster_id
WHERE fm.friend2 = $sessionid
UNION ALL
SELECT p.post_id, p.post_message, UNIX_TIMESTAMP(p.date_posted) as date_posted, u.username FROM posts p
INNER JOIN user_info u
ON u.account_id = p.poster_id
WHERE p.poster_id = $sessionid
)z
ORDER BY post_id DESC LIMIT $page,$limit";
我希望的最终结果包含从最新到最旧的帖子,其中朋友的帖子与会话持有者的帖子以一种可靠的可分页方式混合在一起。