[英]MYSQL: How to join two tables using Inner join and then calculatin the total number from the second table for the following examples
[英]MySQL: Extract total Number of Referred users from same table using JOIN
我有一个与从 table1 获取所有数据以及来自每个记录/用户的推荐用户总数相关的查询。
我有一张名为table1 的表。
表:表1
id name code refer_from_code
1 Name1 R1 0
2 Name2 R2 R4
3 Name3 R3 R2
4 Name4 R4 R4
5 Name5 R5 R2
6 Name6 R6 R1
7 Name7 R7 R6
代码是注册时分配给该用户的代码。 refer_from_code表示该人从哪个用户注册自己。 0表示不代表某人注册。
题:
我想从 table1 中提取所有记录,但还想获得关于refer_from_code 的针对每个用户的推荐总数。
预期结果:
id name total_referred
1 Name1 1
2 Name2 2
3 Name3 0
4 Name4 2
5 Name5 0
6 Name6 1
7 Name7 0
我现在所做的:
我已经为执行此任务编写了以下查询,但它没有按预期工作。
SELECT table1.id, table1.name, table1.COUNT(*) AS total_referred
FROM table1
JOIN table1 ON (table1.code=table1.refer_from_code);
我想使用单个 MySQL 查询来做到这一点。
我相信您应该能够在这里使用GROUP BY
和LEFT JOIN
。
SELECT
u.name,
IFNULL(referrals.total_referred, 0) total_referrals
FROM users u
LEFT JOIN (
SELECT
ui.refer_from_code,
COUNT(*) AS total_referred
FROM users ui
GROUP BY ui.refer_from_code
) AS referrals ON referrals.refer_from_code = u.code
ORDER BY total_referrals DESC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.