0

我喜欢从我的数据库中构建一个摘要。

表:写引号

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 服务器版本相对应的手册,以在第 1 行的“THEN beträge ELSE -beträge END) FROM writenquotes”附近使用正确的语法

4

2 回答 2

2

-1只需将每行乘以pm = 1. 还为所选值使用别名以更轻松地访问它:

$sql = "SELECT SUM(IF(pm=1, -1, 1) * beträge) AS my_sum FROM writenquotes";
...
echo $row['my_sum'];
于 2013-06-30T21:19:30.867 回答
1

您可以CASE为此使用构造:

SELECT SUM(CASE pm=0 THEN beträge ELSE -beträge END)
FROM writenquotes
于 2013-06-30T21:19:39.897 回答