2013-06-30 18 views
0

我喜欢从我的数据库构建摘要。PHP MySQL在表中有0/1标记的多列数组

表: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语法错误;检查“FROM writenquotes THENbeträgeELSE-beträgeEND)”是 对应于你的MySQL服务器版本正确的语法使用 附近手册第1行

+0

**我可以例如只建了积极的总结48 ... **你是什么意思? –

+0

ID 1 = 24(positiv) ID 2 = -24(是负面的) 总结这将是真正的0,而不是48 – Dani

回答

2

只需乘以-1pm = 1每个行。还可以使用别名选择的值来访问更容易:

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

呀这就是正确的... 我站在上线:-) 非常感谢你! – Dani

+0

好的,谢谢dev-null-dweller我必须设置AS值:-) – Dani

1

您可以使用该CASE结构:

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