来自WHERE条件的所有行的总和?

时间:2011-04-27 18:39:47

标签: php mysql

我正在尝试添加从查询中检索到的所有行的内容。

到目前为止,我已经尝试过:

$totalquery = "SELECT SUM(catalogue.price) AS fCount
        FROM catalogue LEFT JOIN orders ON catalogue.plantid = orders.orderplantid
        WHERE orders.orderplantid = '$actualresult' AND orders.ordercustomerid = '$actualresult2' GROUP BY catalogue.price";
        $result3 = mysql_query($totalquery) or die ("Query failed : " . mysql_error());
        $totalresult = mysql_result($result3,0);

然后回显$ totalresult,但问题只显示最后一个值,而不是所有选定值的总和 - 我出错的地方的任何想法?

5 个答案:

答案 0 :(得分:2)

从行尾删除GROUP BY catalogue.price; sum命令是aggregate functions之一。

答案 1 :(得分:1)

如果分组导致形成多个组,则需要在循环中检索行:

while($row = mysql_fetch_assoc($result3)) {
    $total = $row['fCount'];
    ... do something with total ...
}

现在看来,你只是获取第一个求和值并扔掉其余值。

答案 2 :(得分:0)

很可能是因为有多个结果而不是一个结果。并且因为您没有循环遍历数组并将所有值存储到视图中,所以您只看到结果集的最后一个值,因为它是$ totalresult变量的最后一个赋值。 ..

尝试mysql_fetch_assoc($ result3)或mysql_fetch_array($ result3)并遍历结果以获取所有返回的信息......

答案 3 :(得分:0)

而不是mysql_result()使用mysql_fetch_array()

答案 4 :(得分:0)

尝试删除GROUP BY声明。

此外,如果从用户输入$actualresult$actualresult2,请务必转义这些以避免SQL注入攻击:

$totalquery= "... WHERE orders.orderplantid = '" . mysql_real_escape_string($actualresult) . "' AND orders.ordercustomerid = '" . mysql_real_escape_string($actualresult2) . "'";