0

更新:私はそれを理解しました。以下の私の答えを見てください。

以下の表で友人 (相互フォロワー) を識別するために、アプリケーション レベルでいくつかのロジックを記述しようとしています。私のクエリは、以下の表のような形式でデータを返しました (この質問から借用しましたが、クエリは必要ありません。その部分は完了しています)。

A B
1 2 // mutual followers, so "friends"
2 1 // mutual followers, so "friends"
1 3 // user 1 is following 3
1 4 // user 1 is following 4

では、A = B および B = A であるが異なる行にあるユーザーを示すロジックを作成するにはどうすればよいでしょうか? PHP/codeigniter を使用します。

リクエストに応じて、SQL テーブルとクエリを次に示します。

Users table - uid, fname, lname
Followers table - user_id, follow_id

Select users.uid, users.fname, users.lname, u.uid, u.fname, u.lname
FROM users
INNER JOIN follows f on (f.user_id=users.uid)
INNER JOIN users u on (u.uid=f.follow_id)
4

2 に答える 2

1

私はあなたがこのようなものが欲しいと思います:

$results = array(array(1,2),array(2,1),array(1,3),array(1,4));
$mutual_users = array_filter($results,function($elem)use($results){
    if(in_array(array_reverse($elem),$results)){
        return true;
    }
});
print_r($mutual_users);
于 2012-04-28T00:44:49.353 に答える
1

わかりました。フォロワー テーブルには 2 つ目の INNER JOIN が必要でした。以下のコードを SQL クエリに追加したところ、うまくいきました。

INNER JOIN followers f2 ON u.id = f2.user_id AND users.id = f2.follow_id
于 2012-04-28T01:34:41.303 に答える