如何对每个父母计算儿童用户

时间:2019-07-17 13:03:32

标签: sql database

我需要根据我的每个parent_id而不是下面where子句中指定的特定parent_id来计算。

select count(*), U_ID 
from ( 
    select `users`.`u_id` AS U_ID 
    from `users` inner join `referrals` on `users`.`u_id` = `referrals`.`child_u_id` 
    where `referrals`.`level` = 1 
        and `referrals`.`parent_id` = '15254' 
        and `users`.`plan` = 2 
     group by `referrals`.`child_u_id`
) AS t.

这里15254是特定用户。.我希望所有用户列表都包含此计数

它给了我以下结果,我希望所有用户都获得它

Count(*) |  U_Id

3        | 15254

2 个答案:

答案 0 :(得分:0)

显然,您是这个平台的新手。但是要想得到其他帮助,请尽量体贴帮助。阅读有关使用stackoverflow的一些技巧,以便更好地展示您的困难并获得更快,更清晰的答案。这样说,我认为您需要省略在where子句中对其进行过滤以仅显示该user_id的结果。因此,您可以尝试此操作,最后按u_id对其进行分组。

select count(*), U_ID 
from ( 
    select `users`.`u_id` AS U_ID 
    from `users` inner join `referrals` on `users`.`u_id` = `referrals`.`child_u_id` 
    where `referrals`.`level` = 1 
        ---and `referrals`.`parent_id` = '15254' 
        and `users`.`plan` = 2 
     group by `referrals`.`child_u_id`
) AS t
Group by u_Id 

答案 1 :(得分:0)

我已经通过此查询实现了我的目标。

`

select count(*) as C,U_ID 
from (
     select R.`parent_u_id` AS U_ID
     from `users` as U INNER join `referrals` as R on U.`u_id` = R.`child_u_id`
      where R.`level` = 1  
      and U.`plan` = 2
     group BY R.child_u_id
)
 as t 
 Group by U_ID
  HAVING C >= 5

`

相关问题