如何将这 2 个查询合并为 1 个并避免额外的代码
How to combine these 2 queries into 1 and avoid extra code
我在数据库中有 2 tables,table users 列出了所有用户及其邀请者(推荐人),table donations 列出所有捐款
2 table 之间的唯一联系是 user_id 在 table 捐赠 这是 id(主要 AI)在 table users
我想做的是计算 table users 中有 ref='$referrer' 的所有用户,然后查看其中有多少人捐赠了他们在 捐赠 table(每个用户可以捐赠多次,因此不应将 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 的推荐人计数([=46= 中每个 ref='55' 的用户) ] 用户)也有至少一笔捐款 table
类似于:
SELECT COUNT(*) FROM donations WHERE user_id = (SELECT id as user_id FROM users WHERE ref='$referer')
谁能帮我一下
试试这个:
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
SELECT COUNT(*) FROM donations d INNER JOIN users u ON d.user_id=u.id WHERE u.ref='$referrer' GROUP BY d.user_id
我在数据库中有 2 tables,table users 列出了所有用户及其邀请者(推荐人),table donations 列出所有捐款
2 table 之间的唯一联系是 user_id 在 table 捐赠 这是 id(主要 AI)在 table users
我想做的是计算 table users 中有 ref='$referrer' 的所有用户,然后查看其中有多少人捐赠了他们在 捐赠 table(每个用户可以捐赠多次,因此不应将 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 的推荐人计数([=46= 中每个 ref='55' 的用户) ] 用户)也有至少一笔捐款 table
类似于:
SELECT COUNT(*) FROM donations WHERE user_id = (SELECT id as user_id FROM users WHERE ref='$referer')
谁能帮我一下
试试这个:
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
SELECT COUNT(*) FROM donations d INNER JOIN users u ON d.user_id=u.id WHERE u.ref='$referrer' GROUP BY d.user_id