我在数据库中有2个表,表用户列出所有用户及其邀请者(推荐人),表捐款列出所有捐款
2个表格之间的唯一连接是捐赠中的 user_id ,表用户中的 id (主要AI)
我想要做的是获得表用户中所有用户的数量,这些用户有ref =' $ referrer'然后看看他们中有多少人捐赠了他们在捐款表中(每个用户可以捐赠多次,因此不应该将2次捐赠作为2个用户)
我尝试了什么:
首先我得到那个邀请者的每个参考
SELECT id FROM users WHERE ref='$referrer'
然后我把它放在while()循环中,并为每一个我检查他们是否有捐款
SELECT * FROM donations WHERE user_id='$id'
如果发现它们计为1 ++
问题是,如果用户邀请了+500人,那么我使用PHP在循环中发送500个查询,这需要时间和资源
我需要一个带有子查询的查询才能仅使用引荐来源ID(ref =' $ referer')并向我统计所有用户X的引荐(每个用户都有ref =& #39; 55'在桌面用户中例如)捐赠表中至少还有一笔捐款
类似的东西:
SELECT COUNT(*) FROM donations WHERE user_id = (SELECT id as user_id FROM users WHERE ref='$referer')
任何人都可以帮助我
答案 0 :(得分:2)
SELECT COUNT(*) FROM donations d INNER JOIN users u ON d.user_id=u.id WHERE u.ref='$referrer' GROUP BY d.user_id
答案 1 :(得分:1)
试试这个:
SELECT users.id, COUNT(*) `donations_count`
FROM users
INNER JOIN donations ON user.id = donations.user_id
WHERE users.ref='$referrer'
GROUP BY users.user_id