我的数据库中有两张表,一张用于保存用户信息(users_table),另一张用于跟踪朋友
用户表:
id username avatar
1 max max.jpg
2 jack jack.jpg
朋友表:
id u1_id u2_id
1 1 2
2 1 3
在每个用户个人资料中,我都会显示他/她的朋友列表
这是我的查询
select u.id,
u.username,
u.avatar
from friends_table f
join users_table u on f.u1_id = u.id || f.u2_id = u.id
where u.id <> $profile_id
and (f.u1_id = $profile_id || f.u2_id = $profile_id)
此查询选择个人资料所有者的朋友 ($profile_id)
并将他们与用户表连接起来以获取每个朋友的用户名和头像
现在我想计算每个朋友和个人资料所有者之间的共同朋友是否可以在一个查询中进行,或者我应该为每个已建立的朋友做一些长且可能很慢的查询(这只是一个例子,它可能有一些语法错误 ):
foreach ( $friends_list_query_resul as $qr ){
$friend_id = $qr['id'];
$mutual_count = mysql_query
( "select count(*) from friends_table where
($u1_id = $friend_id || $u2_id = $friend_id )
&&
( $u1_id IN ( SELECT `u1_id`,`u2_id` from friends_table where
($u1_id = $profile_id || $u2_id = $profile_id ) )
||
$u2_id IN ( SELECT `u1_id`,`u2_id` from friends_table where
($u1_id = $profile_id || $u2_id = $profile_id ) )
")
}