我正在开发一个小网站,人们可以在这里互相关注。网站上有新闻推送,用户可以在这里看到他们关注的其他用户的更新。问题是,我只能看到其他用户的帖子,而不能看到我的帖子。我希望当前用户能够在其他用户的帖子中看到他的帖子。有点像Facebook墙。我已经尝试了很多不同的查询和php,但我只得到其他用户的帖子,或者当我设法提取我的帖子时,每个关注我的用户都有重复的帖子。
我有三张表"成员"、"张贴"answers"关注"。members表包含UserID、Name和Last Name。Post表包含索引到成员的UserID(表中的FromID)UserID和用户的帖子。下表中有3列FollowID、Followed和Follower,Followed与Follower都是成员UserID的索引。
目前我使用的查询是:
$query= "SELECT Post.*, members.*, follow.* FROM Post
INNER JOIN members ON Post.FromID=members.UserID
LEFT JOIN follow ON members.UserID=follow.Followed
WHERE Post.FromID='$user' OR follow.FollowerID='$user'
ORDER BY Post.date DESC, Post.time DESC";
$user是当前登录用户的UserID。这个查询返回了我想要的所有帖子,但问题是,我的帖子对每个关注我的用户都显示了/n次
我真的很感激能给我一些指导我做错了什么的人。感谢
问题出在$user上。目前发生的情况是,在where子句中有一个OR条件。你试图获取你的数据或你的追随者数据。
我的解决方案是从您的查询中删除$user。所以你将只有追随者的数据列表。对你的帖子进行不同的查询,然后在显示时按日期时间戳对它们进行排序,这样你的帖子也会有其他关注者。
将您的帖子和后续帖子放在一个查询中。
使用活接头。类似:
(查询您的帖子ORDER BY日期)活接头(查询关注者发布ORDER BY日期);
还要检查w3schools中UNION的使用情况。
希望这能帮助
我认为这个查询可能更容易理解:
$query = "SELECT * FROM Post,members,follow
WHERE
Post.FromID=members.UserID
AND
members.UserID=follow.Followed
AND ( Post.FromID='$user' OR follow.FollowerID='$user')
ORDER BY Post.date DESC, Post.time DESC";