我想从我的数据库中构建摘要。
表: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
答案 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