更新:我明白了。请参阅下面的答案。
我正在尝试在应用程序级别编写一些逻辑来识别下表中的朋友(共同关注者)。我的查询以类似于下表的格式返回数据(借用this问题,但我不需要查询,该部分已完成):
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)
答案 0 :(得分: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);
答案 1 :(得分:1)
好的,我明白了。我需要为追随者表第二次INNER JOIN。我将下面的代码添加到我的SQL查询中,并且它有效。
INNER JOIN followers f2 ON u.id = f2.user_id AND users.id = f2.follow_id