Requête SQL pour obtenir les utilisateurs qui sont à la fois suivis par quelqu'un et qui suivent cette personne
P粉562845941
P粉562845941 2024-03-29 22:20:07
0
1
332

J'ai un scénario dans lequel je souhaite trouver des utilisateurs qui suivent l'utilisateur X et l'utilisateur X les suit.

Voir l'architecture ci-dessous : Table de base de données avec valeurs de test

Nous avons follower_id et follow_id, Supposons maintenant que nous voulions vérifier si l'utilisateur avec l'identifiant 23 suit quelqu'un et s'il le suit également.

Comme vous pouvez le voir, l'utilisateur 22 suit l'utilisateur 23, Nous voulons donc obtenir les détails de l'utilisateur 22, comme le nom et l'adresse e-mail, à partir de la table utilisateur.

L'utilisateur 23 suit 24, mais l'utilisateur 24 ne suit pas l'utilisateur 23, nous n'inclurons donc pas l'utilisateur 24 dans la liste.

Veuillez m'aider à rédiger la requête pour obtenir la liste des utilisateurs pour le scénario ci-dessus. Merci

Mise à jour

Parce que j'ai besoin de plus d'informations sur l'utilisateur. J'implémente actuellement une solution lente dans Laravel.

$UsersIAmFollowing = UserFollowing::where('follower_id', $user->id)->get();
        $UsersFollowingMe = UserFollowing::where('following_id', $user->id)->get();
        $friends = [];
        foreach ($UsersIAmFollowing as $userIamFollowing) {
            foreach ($UsersFollowingMe as $userFollowingMe) {
                if($userIamFollowing->following_id == $userFollowingMe->follower_id){
                    array_push($friends, User::find($userIamFollowing->following_id));
                }
            }
        }

        dd($friends);

P粉562845941
P粉562845941

répondre à tous(1)
P粉356128676
select t.id 
      ,t.follower_id    
      ,t.following_id
from   t join t t2 on t2.following_id = t.follower_id 
         and          t.following_id = t2.follower_id
id follow_id ID_suivant
7 22 23
6 23 22
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal