我有以下表,其结果是从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
我想根据相同的项目和位置以及条件总计数量。例如,如果项目签入,则项目的数量将添加到该位置。如果项目结账,则从特定位置的项目的当前总数量中减去项目的数量。
我有第二张桌子,它会在特定位置显示每个项目,并显示该位置的项目总数。到目前为止我所拥有的是这样的:
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
}
?>
非常感谢任何帮助。谢谢。
答案 0 :(得分:0)
我会创建一个带有第一个索引项字符串的数组,第二个是位置 对于读取的每一行,我会这样做:
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"