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!成功了。我将研究拥有。