【问题标题】:PHP MySQL SUM mulitple-columns with 0/1 marker in a table表中带有 0/1 标记的 PHP MySQL SUM 多列
【发布时间】:2013-06-30 21:14:59
【问题描述】:

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

表:写引号

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”附近

【问题讨论】:

  • 我只能建立一个积极的总结,例如48... 你这是什么意思?
  • id 1 = 24 ( positiv ) id 2 = -24 ( negativ ) 总结是真实的 0 而不是 48

标签: php mysql sum multiple-columns


【解决方案1】:

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

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

【讨论】:

  • 是的,没错...我已经上线了 :-) 非常感谢!
【解决方案2】:

您可以为此使用CASE 构造:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多