PHP MySQL SUM多列,表中包含0/1标记

时间:2013-06-30 21:15:00

标签: php mysql sum multiple-columns

我想从我的数据库中构建摘要。

表:writenquotes

id|  datum   |member|transaktion |pm|beträge
1 |1372456800|Name1 |transaktion1|0 |  24
2 |1372543200|Name2 |transaktion1|1 |  24

使用我的代码:

<?php
include("dbopen.php");
$result = mysql_query("SELECT SUM(beträge)
FROM writenquotes");
while($row=mysql_fetch_array($result))
{
echo $row['SUM(beträge)'];
}
?>

我的问题是,PM用0或1来声明正数或负数。

0 =正数

1 =负数

使用我的代码,我只能构建一个积极的摘要,例如48 ...

id 1 = 24(正面)

id 2 = -24(否定)

总结它将是真实的0而不是48

不知道我的错误是什么,但我的代码只给了我0(零)或资源ID#3 ... umpf: - (

<?php
include("dbopen.php");

$result = mysql_query("SELECT SUM(IF(pm=1, -1, 1) * beträge) FROM  writenquotes", $link);
echo mysql_errno($link) . " " . mysql_error($link). "\n";
while($row=mysql_fetch_array($result))
{
echo "<font color=\"red\">".$row['SUM(beträge)']."</font>";
}
?>

这个

<?php
include("dbopen.php");
$result = mysql_query("SELECT SUM(CASE pm=0 THEN beträge ELSE -beträge END) FROM writenquotes", $link);
echo mysql_errno($link) . " " . mysql_error($link). "\n";
echo $result['SUM(beträge)'];
?>

只给我这个:

  

1064您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'THENbeträgeELSE-beträgeEND)来自第1行的writenquotes

2 个答案:

答案 0 :(得分:2)

对于-1的每一行,只需乘以pm = 1。还可以使用选定值的别名来更轻松地访问它:

$sql = "SELECT SUM(IF(pm=1, -1, 1) * beträge) AS my_sum FROM writenquotes";
...
echo $row['my_sum'];

答案 1 :(得分:1)

您可以使用CASE构造:

SELECT SUM(CASE pm=0 THEN beträge ELSE -beträge END)
FROM writenquotes