[英]php mysql if sum not working
trans_id trans_product trans_user trans_date trans_date2 trans_description trans_inventory 13 6 1 1278604284 1278547200 -1000 9 5 1 1278601462 1278547200 New Arrival 200 11 7 1 1278601743 1278547200 50 12 6 1 1278601756 1278547200 5000
$sql = mysql_query("SELECT *, SUM(IF(trans_inventory>0,trans_inventory,0)) as pos "
+"FROM site_trans GROUP BY trans_product") or die(mysql_error());
while($row = mysql_fetch_array($sql)) {
$amt_p = $row['pos'];
$sql2 = mysql_query("SELECT *, SUM(IF(trans_inventory<0,trans_inventory,0)) as neg "
+ "FROM site_trans GROUP BY trans_product") or die(mysql_error());
while($row2 = mysql_fetch_array($sql2)) {
$amt_n = $row2['neg'];
}
echo $amt_p; //working
echo $amt_n; // not working
}
第一個sql查詢正在工作($ amt_p),但是第二個sql查詢是否為負不工作($ amt_n)任何想法我做錯了什么?
您將為每個產品覆蓋$amt_n
。 我建議將查詢合並成這樣:
$sql = mysql_query("SELECT *, "
+ "SUM(IF(trans_inventory>0,trans_inventory,0)) as pos, "
+ "SUM(IF(trans_inventory<0,trans_inventory,0)) as neg "
+ "FROM site_trans GROUP BY trans_product") or die(mysql_error());
while($row = mysql_fetch_array($sql)) {
$amt_p = $row['pos'];
$amt_n = $row['neg'];
echo $amt_p;
echo $amt_n;
}
加$amt_n = 0
進行初始化
更改$amt_n = $row2['neg'];
到$amt_n += $row2['neg'];
問題是您在對其進行迭代時將值歸零
您需要對pos和neg都這樣做
直流電
不知道為什么它不起作用,但是在我看來,您只需要所有正負trans_inventory行。 您如何在第一個查詢中添加“ where trans_inventory> 0”,並擺脫條件IF條件呢?
SELECT *, SUM(trans_inventory) as pos
FROM site_trans
WHERE trans_inventory>0
GROUP BY trans_product
您所說的“不工作”到底是什么意思? 您獲得什么價值,您期望什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.