【问题标题】:Follow Unfollow system关注取消关注系统
【发布时间】:2021-05-05 01:03:58
【问题描述】:

我正在这个网站上关注和取消关注用户,就像 Twitter 关注一样。 下面的查询有效,然后我注意到它没有显示我未关注的用户,因为该用户已被某人关注或正在关注某人

$stmt = $mysqli->prepare("SELECT * FROM town_users LEFT JOIN user_follow_list ON user_follow_list.following_id = town_users.user_id WHERE town_users.user_id != ? AND user_follow_list.follow_id IS NULL ORDER BY RAND() LIMIT 5");
$stmt->bind_param("i", $user_id);

下面是我的表结构

town_users
user_id username
| 1    | ben
| 2    | betty
| 3    | tom
| 4    | john


user_follow_list
follow_id         follower_id         following_id
|      1     |       1         |      2
|      2     |       1         |      3

在 user_follow_list 中 Ben 正在关注 bettytom。现在john 关注用户让我们说tom

follow_id         follower_id         following_id
|      3     |       4         |      3

现在的问题是john 没有出现在ben 要关注的用户列表中。

它旨在显示我没有关注的用户,以便我可以关注他们。

【问题讨论】:

  • 制作user_follow_list.follow_id IS NULL的想法是什么?
  • 感谢您的回复。如果没有 user_follow_list.follow_id IS NULL,它将继续向我显示我关注的用户
  • 在 following_id 上使用 SELECT CASE
  • 好的会调查,但事实是我只是一个初学者。也许你可以帮我重写。我真的很感激。
  • @Everythinggood 你试过AND user_follow_list.follower_id != :user_id 之类的东西来代替它吗?

标签: php mysql mysqli


【解决方案1】:
SELECT * FROM town_users 
LEFT JOIN user_follow_list ON user_follow_list.follower_id = town_users.user_id 
WHERE town_users.user_id NOT IN (SELECT following_id FROM user_follow_list WHERE 
follower_id = 1) AND town_users.user_id != 1
GROUP BY town_users.user_id ORDER BY RAND() LIMIT 5

此查询将获取所有未被关注的用户 ($user_id = 1)。

$stmt = $mysqli->prepare("SELECT * FROM town_users 
                          LEFT JOIN user_follow_list ON user_follow_list.follower_id = town_users.user_id 
                          WHERE town_users.user_id NOT IN (SELECT following_id FROM user_follow_list WHERE follower_id = ?) 
                          AND town_users.user_id != ?
                          GROUP BY town_users.user_id ORDER BY RAND() LIMIT 5");
$stmt->bind_param("ii", $user_id, $user_id);

这是一个 SQL Fiddle:http://sqlfiddle.com/#!9/96d55/23/0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多