我在数据库中有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='55'),这些用户在捐赠表中也至少有一次捐赠
像这样:
SELECT COUNT(*) FROM donations WHERE user_id = (SELECT id as user_id FROM users WHERE ref='$referer')
任何人都可以帮我吗
SELECT COUNT(*) FROM donations d INNER JOIN users u ON d.user_id=u.id WHERE u.ref='$referrer' GROUP BY d.user_id
试试这个:
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