gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:32:00 25 4
gpt4 key购买 nike

我有下表,其中的结果是从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com