mysql在另一个选择组中选择:下线有多少人?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql在另一个选择组中选择:下线有多少人?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1796字,纯文字阅读大概需要3分钟。
内容图文
![mysql在另一个选择组中选择:下线有多少人?](/upload/InfoBanner/zyjiaocheng/905/2de83aa68b1b407fa60662817024d807.jpg)
你好我有一张类似这个的表:
id sponsor name
------------------------
1 0 Sasha
2 1 John
3 1 Walter
4 3 Ashley
5 1 Mark
6 4 Alexa
7 3 Robert
8 3 Frank
9 4 Marika
10 5 Philip
11 9 Elizabeth
当我选择一个ID(称之为MYCHOICE)时,我想知道赞助商像MYCHOICE的所有人的名字……简单地说:
select * from tablename where sponsor=MYCHOICE
但是……这就是问题…我会知道在这个结果的下线有多少人……所以…赞助商有多少记录像每个id.
如果我选择id 1结果应该是
id name downline
----------------------
2 John 0 (noone with sponsor=2)
3 Walter 3 (3 with sponsor=3: ashley, robert, frank)
5 Mark 1 (1 with sponsor=5: philip)
如果我选择id 4结果应该是
id name downline
----------------------
6 Alexa 0
9 Marika 1 (1 with sponsor=9: Elizabeth)
如果mychoice为1,我会尝试这个“糟糕的解决方案”
select sponsor,count(*) as downline from tablename where sponsor in
(select id from tablename where sponsor=1) group by sponsor order by
downline desc
这个查询的结果是
sponsor downline
---------------------
3 3
5 1
有两个问题:
– 名字不是权利,不是我想要的
– 示例中的计数0“2 | John | 0”不会出现
谢谢你的建议和帮助,对不起英语,
N.
解决方法:
SELECT child.id,
child.name,
COUNT(grandchild.sponsor) downline
FROM TableName child
INNER JOIN TableName parent
ON child.sponsor = parent.id AND
parent.id = ? -- << user choice
LEFT JOIN TableName grandchild
ON child.id = grandchild.sponsor
GROUP BY child.id, child.name
如您所见,该表连接两次.使用INNER JOIN的第一个连接获取与赞助商关联的记录,即您的user_choice.使用LEFT JOIN的第二个连接获取与user_choice中的记录关联的所有记录.
内容总结
以上是互联网集市为您收集整理的mysql在另一个选择组中选择:下线有多少人?全部内容,希望文章能够帮你解决mysql在另一个选择组中选择:下线有多少人?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。