我在使用JOIN子句对MYSQL数据库中的项目进行分组和计数时遇到问题
我的两张桌子如下
用户表
id | surname | othernames
1 | Doe | John
2 | Doe | Jane
3 | Doe | Mary
订阅表
id | user_id | parent_subscription_id
1 | 1 | Null
2 | 2 | 1
3 | 3 | 1
4 | 4 | 2
5 | 5 | 3
6 | 6 | 3
我需要能够产生如下列表
Name | Referrals
John Doe | 2
Jane Doe | 1
Mary Doe | 2
换句话说,它是用户表中的用户,其users.id与subscriptions.user_id相匹配,subscriptions.user_id的订阅带有subscriptions.id,后者是另一个订阅的父订阅。这意味着,如果您的订阅被另一个订阅引用为其自己的parent_subscription_id,则该新订阅将成为您的引荐。
我尝试了以下查询,但没有给我预期的结果
SELECT users.surname, users.othernames,count('s.parent_subscription_id') as referrals
FROM users
LEFT JOIN subscriptions s ON s.user_id=users.id
group BY parent_subscription_id
我已经检查了关于SO的其他一些问题,但是找不到解决此类问题的任何方法。谢谢
这个查询最终给了我一直在寻找的结果
SELECT u.surname,u.othernames,s1.id,s1.parent_subscription_id,
s1.refcode, IFNULL(count(s2.parent_subscription_id),0) as referrals
FROM `subscriptions` s1 left join subscriptions s2
on s1.id=s2.parent_subscription_id
LEFT JOIN users u ON u.id=s1.user_id
GROUP by s1.id
谢谢大家的指导和支持。我对此深表感谢