すべてのサイト メンバーが一意の ID であるメンバー テーブルがあります。例えば
id firstname secondname emailaddress country city gender
2 番目のテーブルは、次の構造を持つフレンズ テーブルです。
id meid friendid date
共通の友達に基づいて特定のユーザーの友達の提案を取得し、それに応じて並べ替えるには、どのクエリを使用しますか。以前は、php を使用してループスルーし、相互の友人を収集していましたが、サイトが成長するにつれて、php が誤動作し始め、メモリが不足し始めました。
これは私が使っていた機能です
//-----------------------------------------------
function getFriendSuggestions($id)
{
$friendids=getFriendIdArray($id); //returns list of your friends
$networkids=getNetworkIdArray($id);//returns list of all members in your network(friends and their friends)
$diff=array_merge(array(),array_diff($networkids,$friendids));
$diff_mutual=array();
$diff_mutual_total=array();
for ($n=0;$n<count($diff);$n++)
{
$ff=getFriendIdArray($diff[$n]);
$mf=array_merge(array(),array_intersect($ff,$friendids));
$diff_mutual[]=$mf;
$diff_mutual_total[]=count($mf);
}
$diff=array_merge(array(),$diff);
$diff_mutual=array_merge(array(),$diff_mutual);
$diff_mutual_total=array_merge(array(),$diff_mutual_total);
$w=$diff_mutual_total;
arsort($w);
$d=array();
$dm=array();
foreach ($w as $key => $value)
{
$d[]=$diff[$key];
$dm[]=$diff_mutual[$key];
}
$cv=array($d,$dm);
return $cv;
}