PHP Sum 列值,如果多个键是相同的 MySql

标签 php mysql

我有下表,其中的结果是从 mysql 查询中获取的。这些值仅供引用。

Item | Location |  CheckIn   |  Checkout  | Quantity

  A  |   abc    | 10/10/2015 |            |    20
  A  |   abc    |            | 11/10/2015 |    10
  B  |   def    | 11/10/2015 |            |    25
  A  |   abc    | 12/10/2015 |            |    5
  B  |   def    |            | 13/10/2015 |    10
  B  |   def    | 14/10/2015 |            |    3
  A  |   ghi    | 14/10/2015 |            |    30

我想根据相同的项目和位置以及条件来合计数量。例如,如果项目 checkin ,项目的数量将添加到位置。如果项目 checkout ,则从特定位置的项目当前总数量中减去该项目的数量。

我有第二张表,它将显示特定位置的每个项目以及该位置的项目总数。到目前为止,我所拥有的是这样的:

Item | Location | Total Quantity

  A  |   abc    |  20
  A  |   abc    |  10
  B  |   def    |  35
  A  |   abc    |  40
  B  |   def    |  30
  B  |   def    |  33
  A  |   ghi    |  63

预期的结果应该是这样的:

Item | Location | Total Quantity

  A  |   abc    |  15
  B  |   def    |  18
  A  |   ghi    |  30

到目前为止我为第二张表所做的代码:

<?php
$result = mysql_query("SELECT * FROM itemloc INNER JOIN tblitem ON itemloc.itemId=tblitem.itemId INNER JOIN tblloc ON itemloc.locId=tblloc.locId");
$loc = array();
$total = 0;

while($row = mysql_fetch_array($result))
{
$checkout = $row['itemLocCheckOut'];
if($loc[$row['locId']] = $row['itemId']){
    if(is_null($checkout)){
        $qty = +$row['itemLocQty'];
        }
    else{
        $qty = -$row['itemLocQty'];
        }
$total+=$qty;
$name = $row['itemNm'];
$locnm = $row['locNm'];
}
?>
<tr>
    <td><?php echo $name;?></td>
    <td><?php echo $locnm;?></td>
    <td><?php echo $total;?></td>
</tr>

<?php
}
?>

任何帮助将不胜感激。谢谢。

最佳答案

我会用第一个索引项字符串和第二个位置创建一个数组。
对于读取的每一行,我会这样做:

while($row = mysql_fetch_array($result))
{
    $item = $row['item'];
    $location = $row['location'];
    if(!isset($result[$item][$location]))
        $result[$item][$location] = 0;
    if(is_null($row['itemLocCheckOut']))
        $result[$item][$location] += $row['quantity'];
    else
        $result[$item][$location] -= $row['quantity'];
}

最后,在表上传递 2 个 foreach:

foreach($result as $k1 => $v1)
    foreach($v1 as $k2 => $v2)
         echo "Item $k1 location $k2 has $v2 quantity"

关于PHP Sum 列值,如果多个键是相同的 MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33629544/

相关文章:

javascript - 当点击列表项时隐藏其他元素

javascript - 单击时切换颜色链接颜色

mysql - 如何在嵌套的两级子查询中使用外表?

php - 在 "IN CLAUSE"mysql php 中返回 null 或空字符串

mysql - SQL获取单行中不为零的列

java - Java 和 PHP 中的 SHA1 具有不同的结果

php - 地穴错误 - 'MAC is invalid.'

php - magento 模块设置存储在哪里?

mysql - 迄今为止在 mysql 上的纪元

sql - VARCHARS : 2, 4、8、16 等?还是 1、3、7、15 等?