我正在一个人们可以互相关注的小网站上工作。网站上有新闻源,用户可以看到他们关注的其他用户的更新。问题是,我只能看到其他用户的帖子而不是我的帖子。我希望当前用户能够在其他用户帖子中查看他的帖子。像Facebook Wall这样的东西。 我已经尝试了大量的差异查询和PHP,但我只有其他用户发布或当我设法撤出我的帖子时,每个跟随我的用户都有公告帖。
我有3个桌子'成员',' Post'和'关注'成员表包含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次。
我真的很感激那个能给我一些方向的人的好意。谢谢
答案 0 :(得分:0)
我认为这个查询可能更容易理解:
$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";
答案 1 :(得分:0)
问题出在你的$用户身上。目前发生的事情是你在where子句中有OR条件。并且您试图提取您的数据或您的关注者数据。
我的解决方案是从您的查询中删除$ user。因此,您将只有关注者数据列表。对您的帖子进行不同的查询,然后按日期时间显示排序时间戳,这样您就可以将帖子与其他关注者一起排序。
让您的帖子和关注者在一个查询中发帖。
使用union。喜欢:
(查询您的帖子ORDER BY日期) 联盟 (查询关注者帖子ORDER BY日期);
同时检查w3schools中的UNION用法。
希望这有帮助