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

好吧,我想通了。我需要为关注者表添加第二个 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 回答