gpt4 book ai didi

php - 根据特定标准对数组中的列求和

转载 作者:行者123 更新时间:2023-11-29 17:20:37 25 4
gpt4 key购买 nike

我正在尝试使 PHP 页面更加高效。目标是统计两个日期之间交付的工作的付款。付款位于单独的表中,但只有付款日期,没有交货日期。以前,我有一个 while 循环来选择两个日期之间的所有记录,然后在循环内对付款表执行另一个查询。这是非常慢的,所以我在 2 个查询中完成了这个操作,并将结果放入一个数组中,如下所示。

{ [20253]=> array(5) { ["contNo"]=> string(5) "20253" ["contDate"]=> string(19) "2017-01-25 15:15:34" ["hireStart"]=> string(10) "2017-01-27" ["hireEnd"]=> string(10) "2017-01-30" ["revenue"]=> array(2) { [0]=> array(2) { ["contNo"]=> string(5) "20253" ["revenue"]=> string(6) "197.85" } [1]=> array(2) { ["contNo"]=> string(5) "20253" ["revenue"]=> string(5) "70.22" } } }

我现在想做的是当hireStart日期在xy之间时对收入求和> 日期,并在 contDate 介于 xy 日期之间时对收入求和。

有人知道我该怎么做吗?只是要指出,这只是 14000 个结果数组中的一条记录,因此效率是我最需要的!用于生成数组的代码如下。

while ($contNums = $result2->fetch_assoc()) {
//for each contract in date range sum revenue
$contNoArray[$contNums['contNo']]=$contNums;
}
mysqli_free_result($result2);

$stmt2="SELECT contNo, revenue FROM `payments`";
$result3 = $conn->query($stmt2);
while ($payments = $result3->fetch_assoc()) {
$contNoArray[$payments['contNo']]['revenue'][]=$payments;
}
foreach($contNoArray AS $contract)
{
This is where i am stuck!
}

最佳答案

感谢乔纳森建议左加入。之前就应该想到这一点!我仍然想知道如何(代码方面)做到这一点,就像我最初尝试的那样(如果有人知道的话)。在查询中执行此操作的解决方案如下...

SELECT sum(P.revenue) as revTotal
FROM contracts C LEFT JOIN payments P
ON P.contNo = C.contNo
where C.contDate BETWEEN '2017-01-01' AND '2018-12-31'

关于php - 根据特定标准对数组中的列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51271329/

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