如何从朋友表中获取朋友列表以及朋友的朋友数量

时间:2016-04-16 13:16:24

标签: php mysql

我如何从朋友表中获取朋友列表,包括我朋友的朋友数量(不是我的朋友的数量)

朋友表" tbl_users_friends

字段1:id 字段2:user_id 字段3:friend_user_id

我需要输出为:

A有以下的炒作:

x(10) y(2) z(0)

以上是我的朋友列表,括号中包含他们的朋友数。

由于

2 个答案:

答案 0 :(得分:1)

select user_id, count(*) cnt 
   from  Friends 
   where user_id in  
      (select friend_user_id 
         from Friends 
         where user_id = user_id_of_A)
   group by user_id

答案 1 :(得分:1)

尝试这样的事情:

select u.user_id, u.name, count(uf1.id) as num_friends
from tbl_users_friends uf
inner join tbl_users u           on u.user_id = uf.friend_user_id
left  join tbl_users_friends uf1 on uf1.user_id = uf.friend_user_id
where uf.user_id = 1
group by u.user_id, u.name

http://sqlfiddle.com/#!9/10033/1

您需要调整用户的表名和列名。

另一个带有subselect但没有group by的解决方案:

select u.user_id, u.name, (
        select count(*)
        from tbl_users_friends uf1
        where uf1.user_id = uf.friend_user_id
    ) as num_friends
from tbl_users_friends uf
inner join tbl_users u on u.user_id = uf.friend_user_id
where uf.user_id = 1