简体   繁体   中英

How do I get friend list from Friends table with counts of friends of my friends

How do I get friend list from Friends table with counts of friends of my friends (Count not of my friends)

Friends table" tbl_users_friends

Field 1: id Field 2: user_id Field 3: friend_user_id

and I need the out put as:

A has following friedns:

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

Above is the list of my friends and in parenthesis contains their friends count.

Thanks

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

Try something like this:

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

You need to ajust the users table and column names.

Another solution with a subselect but without 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM