[英]How do I Inner Join users table with followed users posts?
我正在尝试从当前用户关注的人员及其详细信息中检索这些帖子。 我一直在研究,加入似乎是正确的方法,但是我不确定这样做有什么问题。
这是我的代码
$queryfeed = "SELECT posts.user_id, posts.body, posts.image, posts.has_image
FROM posts, follows WHERE posts.user_id = follows.leader_id
AND follows.follower_id =$user_id INNER JOIN users ON users.user_id
= follows.leader_id";
$resultfeed = $db->query($queryfeed);
if($resultfeed->num_rows > 0) {
while( $rowfeed = $resultfeed->fetch_assoc() ) {
if($rowfeed['posts.has_image'] == 1) {
?>
<article class="post">
<div class="post-head cf">
<a class="userpic" href=""><img src="<?php echo $userpic ?>" alt="<?php echo $rowfeed['users.username'] ?>"></a>
<a href="" class="username">
<?php echo $rowfeed[users.'username']; ?>
</a>
</div>
<img src="users/user_<?php echo $rowfeed['posts.user_id'] ?>/posts/<?php echo $rowfeed['posts.image']; ?>" alt="">
<div class="post-body">
<div class="post-options">
<a class="likes" href="">2 likes</a>
</div>
<p>
<a class="username" href="">
<?php echo $rowfeed['users.username'] ?>
</a>
<?php echo $rowfeed['posts.body'] ?>
</p>
<hr />
<div class="cf">
<a class="like hide-text" href="javascript:;">Like This Post</a>
<form action="" class="comment">
<input type="text" placeholder="Add a comment">
</form>
</div>
</div>
</article>
<?php } else { ?>
我的桌子看起来像这样
users
user_id | username | avatar
posts
post_id | user_id | body | image | has_image
follows
leader_id | follower_id
从您的原始查询中,我看到您仅对帖子的数据感兴趣(而不是对发布该数据的用户感兴趣)。 我假设$ user_id持有当前用户的ID,即也用作follower_id的值。 在这种情况下,查询变得更容易:
SELECT p.user_id, p.body, p.image, p.has_image
FROM followers f INNER JOIN posts p ON f.leader_id = p.user_id and f.follower_id = $user_id
如果您还对发布者的用户数据感兴趣,请按以下方式更改查询:
SELECT p.user_id, p.body, p.image, p.has_image, u.username, u.avatar
FROM follows f
INNER JOIN posts p ON f.leader_id = p.user_id and f.follower_id = $user_id
INNER JOIN users u ON p.user_id = u.user_id
我现在无法访问计算机,但是您的SQL查询似乎有一些错误。 查看我的更正版本:
SELECT posts.user_id, posts.body, posts.image, posts.has_image FROM posts
INNER JOIN follows ON posts.user_id = follows.follower_id
WHERE follows.leader_id=$user_id;
试试这个查询:
SELECT
posts.user_id, posts.body, posts.image, posts.has_image
authors.avatar, authors.username
FROM
posts
LEFT JOIN
users as authors
ON
authors.user_id=posts.user_id
LEFT JOIN
follows
ON
follows.leader_id=authors.user_id
WHERE
follows.follower_id={$user_id}
仅使用左联接...。
假设当前user.user_id为1,关注者为user.user_id 2,3和4
我认为我们需要满足以下条件,对吗?
posts.user_id = follows.follower_id follows.leader_id = $user_id
因此查询将需要像这样的权限吗?
SELECT * FROM posts INNER JOIN follows ON posts.user_id = follows.follower_id INNER JOIN users ON follows.leader_id = $user_id
这是表的模拟示例
=== users === user_id | username | avatar 1 current 2 fake1 3 fake2 4 fake3
=== users === user_id | username | avatar 1 current 2 fake1 3 fake2 4 fake3
=== posts === post_id | user_id | body | image | has_image 1 2 2 2 3 3 4 3 5 4 6 4
=== posts === post_id | user_id | body | image | has_image 1 2 2 2 3 3 4 3 5 4 6 4
=== posts === post_id | user_id | body | image | has_image 1 2 2 2 3 3 4 3 5 4 6 4
=== follows === leader_id | follower_id 1 2 1 3 1 4
=== follows === leader_id | follower_id 1 2 1 3 1 4
这有意义吗? 由于当前用户($ user_id)是关注者的领导者,因此,如果您希望关注者的帖子而不是领导者的帖子,则follower_id的用户必须是帖子的用户...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.