suchen

Heim  >  Fragen und Antworten  >  Hauptteil

SQL-Abfrage, um Benutzer zu ermitteln, denen jemand folgt und die dieser Person folgen

Ich habe ein Szenario, in dem ich Benutzer finden möchte, die Benutzer X folgen und Benutzer X ihnen folgt.

Sehen Sie sich die Architektur unten an: Datenbanktabelle mit Testwerten

Wir haben follower_id und Following_id, Nehmen wir nun an, wir möchten überprüfen, ob der Benutzer mit der ID 23 jemandem folgt und ob er ihm auch folgt.

Wie Sie sehen können, folgt Benutzer 22 Benutzer 23, Daher möchten wir die Details von Benutzer 22 wie Name und E-Mail aus der Benutzertabelle abrufen.

Benutzer 23 folgt 24, aber Benutzer 24 folgt nicht Benutzer 23, daher werden wir Benutzer 24 nicht in die Liste aufnehmen.

Bitte helfen Sie mir, die Abfrage zu schreiben, um die Benutzerliste für das obige Szenario zu erhalten. Danke

Aktualisiert

Weil ich weitere Informationen über den Benutzer benötige. Ich implementieren derzeit eine langsame Lösung in 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粉562845941P粉562845941289 Tage vor368

Antworte allen(1)Ich werde antworten

  • P粉356128676

    P粉3561286762024-03-30 15:18:57

    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
    7 22 23
    6 23 22

    Antwort
    0
  • StornierenAntwort