Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将这两个查询合并为一个查询并避免额外的代码_Php_Mysql - Fatal编程技术网

Php 如何将这两个查询合并为一个查询并避免额外的代码

Php 如何将这两个查询合并为一个查询并避免额外的代码,php,mysql,Php,Mysql,我在数据库中有两个表,表用户列出了所有用户及其邀请者(推荐者),表捐赠列出了所有捐赠 两个表之间的唯一连接是表中的用户id,它是表用户中的id(主AI) 我想做的是获得表用户中所有用户的计数,这些用户的ref='$referer',然后查看他们中有多少人已经捐赠,并且他们在捐赠表中(每个用户可以多次捐赠,因此不应将2个捐赠计算为2个用户) 我所尝试的: 首先,我得到了邀请者的每个参考号 SELECT id FROM users WHERE ref='$referrer' 然后我把它放在一个wh

我在数据库中有两个表,表用户列出了所有用户及其邀请者(推荐者),表捐赠列出了所有捐赠

两个表之间的唯一连接是表中的用户id,它是表用户中的id(主AI)

我想做的是获得表用户中所有用户的计数,这些用户的ref='$referer',然后查看他们中有多少人已经捐赠,并且他们在捐赠表中(每个用户可以多次捐赠,因此不应将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 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 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

谢谢,$referer的活动转介的最终计数是获取mysqli_num_行($result);在PHP中的查询结果如何?无论我在$referer中输入了什么,此查询始终返回相同的结果,即每个用户的所有捐赠计数(与$referer无关)谢谢,因此$referer的活动引用的最终计数是获得mysqli_num_行($result);在PHP中的查询结果是什么?无论我在$referer中输入了什么,这个查询总是返回相同的结果,即每个用户的所有捐赠计数(与$referer无关)。谢谢,我尝试了,但出现了错误:字段列表中的“id”列模糊不清将“SELECT id”更改为“SELECT users.id”,这应该会解决问题,我试过了,但出现了错误:字段列表中的列“id”模棱两可将“SELECT id”更改为“SELECT users.id”,这应该可以解决问题