php mysql比问题更大

php mysql比问题更大,php,mysql,Php,Mysql,我有两个表:用户,图像。用户有一个列paid,这是一个数字,表示他们为参加比赛而支付的图片数量。。 图像有一列“已输入”,值为0表示未输入,值为1表示已输入。我需要每个用户的这些数据的总和 我正在尝试查询所有为超过他们输入的图片付费的用户。但是它不能正常工作。。以下是打印的内容: bob@example.com 8 2 jcannon@example.com 3 3 jrcih@example.com 7 3 aerwqeerll@example.

我有两个表:
用户,图像
。用户有一个列
paid
,这是一个数字,表示他们为参加比赛而支付的图片数量。。 图像有一列“已输入”,值为0表示未输入,值为1表示已输入。我需要每个用户的这些数据的总和

我正在尝试查询所有为超过他们输入的图片付费的用户。但是它不能正常工作。。以下是打印的内容:

bob@example.com        8  2  
jcannon@example.com    3  3  
jrcih@example.com      7  3  
aerwqeerll@example.com 5  1  
ray@example.com        2  3  
您可以看到jcannon@和ray@不应该在列表中,因为paid不大于entered

代码如下:

$SQL = mysql_query("SELECT  *, SUM(images.entered) 
                        FROM users, images 
                        WHERE users.id=images.owner 
                        AND users.paid>'SUM(images.entered)' 
                        GROUP BY users.id  ");

while($sendto=mysql_fetch_array($SQL)){
    print $sendto['email']." ".$sendto['paid']. 
          " ".$sendto['SUM(images.entered)']. "<br>";
}
$SQL=mysql\u查询(“选择*,求和(images.entered)
来自用户、图像
其中users.id=images.owner
和用户。付费>'SUM(images.entered)'
按用户分组(id”);
而($sendto=mysql\u fetch\u数组($SQL)){
打印$sendto['email']。“”.$sendto['paid']。
“.$sendto['SUM(images.entered)'”。
”; }

我做错了什么?

首先去掉引号,它们是用于文本字符串的。其次,您只能将聚合值与子句进行比较:

此外,我发现使用显式连接语法比使用
WHERE
更清晰:

SELECT  *, SUM(images.entered)
FROM users
INNER JOIN images
ON users.id = images.owner
GROUP BY users.id
HAVING users.paid > SUM(images.entered)

首先去掉引号,它们用于文本字符串。其次,您只能将聚合值与子句进行比较:

此外,我发现使用显式连接语法比使用
WHERE
更清晰:

SELECT  *, SUM(images.entered)
FROM users
INNER JOIN images
ON users.id = images.owner
GROUP BY users.id
HAVING users.paid > SUM(images.entered)
试一试

*如果两个表都有一些列标识,则可以使用join

$SQL = mysql_query("
SELECT  
*, 
SUM(images.entered) as totalImage,
FROM users
INNER JOIN images on (users.id = images.owner) 
HAVING users.paid >  totalImage
GROUP BY users.id  

");
试一试

*如果两个表都有一些列标识,则可以使用join

$SQL = mysql_query("
SELECT  
*, 
SUM(images.entered) as totalImage,
FROM users
INNER JOIN images on (users.id = images.owner) 
HAVING users.paid >  totalImage
GROUP BY users.id  

");

真的引用了“SUM(images.entered)”吗?这使它成为一个字符串。>操作符将把它转换为一个数字0,这样每个付费的人都会匹配。删除“…我删除引号时得到0个结果…”。。。通过引用,我得到了结果。它还删除了为0付费并输入0的用户是否真的引用了“SUM(images.entered)”?这使它成为一个字符串。>操作符将把它转换为一个数字0,这样每个付费的人都会匹配。删除“…我删除引号时得到0个结果…”。。。通过引用,我得到了结果。它还会删除为0付费并输入0的用户。当我删除报价时,我会得到0个结果。。。通过引用,我得到了结果。它还删除了为0付费并输入0的用户。约翰尼,尝试大于或等于(
=
)仍然没有结果,这很奇怪,因为如果我将`and users.paid>=SUM(images.entered)`完全删除。我所有的结果都正确打印,显示了
支付的
金额(输入)
值。我已经更新了答案。问题是使用WHERE和HAVINGThanks!成功了。我将研究
是否具有
。当我删除引号时,我得到0个结果。。。通过引用,我得到了结果。它还删除了为0付费并输入0的用户。约翰尼,尝试大于或等于(
=
)仍然没有结果,这很奇怪,因为如果我将`and users.paid>=SUM(images.entered)`完全删除。我所有的结果都正确打印,显示了
支付的
金额(输入)
值。我已经更新了答案。问题是使用WHERE和HAVINGThanks!成功了。我将研究
拥有