求和行并插入新列

时间:2011-04-15 16:08:31

标签: php mysql sum

我有一个用于跟踪项目权重的数据库。 这些领域是: id,email,order01,order02,order03,order_total

示例数据:

1  mon@gmail.com        0.250    0.000     0.000    0.000   
2  amy@amy.com          0.510    1.888     0.219    0.000   
3  ci@mindspring.com    0.219    0.500     0.000    0.000   
4  kim@kim.com          0.219    0.000     0.000    0.000 

我可以添加数据(即新行或更新现有行) 我也可以使用php在html表中显示数据 我也可以对每一行求和并吐出一个由电子邮件汇总的列。 我需要做的是对每一行求和并在末尾插入总和,在另一列中。

所需的示例数据:

1  mon@gmail.com       0.250    0.000    0.000    0.250     
2  amy@amy.com         0.510    1.888    0.219    2.617     
3  ci@mindspring.com   0.219    0.500    0.000    0.719     
4  kim@kim.com         0.219    0.000    0.000    0.219     

同样,我能够在表格中显示数据,并且我能够对每一行求和 - 我似乎无法弄清楚如何将总和插入到正确的列中

这是我用来汇总数据的代码:

$result = mysql_query('SELECT email, (order01+order02+order03) AS order_total FROM `customer_orders`'); 
if (mysql_num_rows($result) > 0) { 
  print '<ul>'; 
  $sum = array(); // initialize 
  while ($myrow = mysql_fetch_array($result)) { 
    $sum[] = $myrow['order_total']; // sum 
    $ordertotal= $myrow['order_total']; 
    print "<li>$ordertotal</li>"; 
  } 
  $sum = array_sum($sum); 
  print "</ul>$sum\n"; 
  } else { 
    print "<h1>No results</h1>\n"; 
  }

这会给我一个页面,其中包含一个如下所示的列:

    0.250
    2.617
    0.719
    0.219

3.8

我并不关心每列的总数,或者总计...只是每行的总和,添加到相应的行。

3 个答案:

答案 0 :(得分:3)

UPDATE mytable SET order_total=order01+order02+order03

会做到这一点。但是,您应该重新考虑您的桌面设计。如果大多数订单只需要1个项目,那么您在数据库中浪费了2个字段。而且你肯定让某人订购4件或更多件物品变得非常困难/不可能。

您应该做的是将订单详细信息拆分为子表,这为1到'批量'的订单提供了基本上无限的灵活性。

答案 1 :(得分:0)

UPDATE your_table SET order_total=(order01 + order01 + order03) WHERE id='id_of_field_to_change'

如果你想一次性完成它们,只需取下where子句。

答案 2 :(得分:0)

UPDATE customer_orders
    SET order_total = order01 + order02 + order03