gpt4 book ai didi

php - 按 php 中类似的 2 个字段分组并得到总计数结果?

转载 作者:行者123 更新时间:2023-11-29 03:40:46 25 4
gpt4 key购买 nike

如何在 php 中对两个相似的字段进行分组?

我尝试使用 GROUP BY DATE(bill.date) 和 bill.agent_id 但它对我不起作用

表结构1:http://i.stack.imgur.com/yvBF0.jpg (表名是 bill_agents )
表结构 2:http://i.stack.imgur.com/38tKh.jpg (表名为 bill )

当前结果

+---------+----+----+----+-----+----+
| | 1 | 2 | 3 | 4 | 5 |
+---------+----+----+----+-----+----+
| Agent 1 | 35 | 0 | 0 | 0 | 0 |
| Agent 2 | 0 | 10 | 0 | 0 | 0 |
| Agent 1 | 0 | 0 | 12 | 0 | 0 |
| Agent 3 | 0 | 0 | 0 | 100 | 0 |
| Agent 6 | 0 | 0 | 0 | 9 | 0 |
| Agent 2 | 0 | 0 | 0 | 9 | 14 |
+---------+----+----+----+-----+----+

1,2,3,4,5 .... 是从 date 开始的天数

但我想得到像下面这样的东西

+---------+----+----+----+-----+----+----+
| | 1 | 2 | 3 | 4 | 5 |total
+---------+----+----+----+-----+----+----+
| Agent 1 | 35 | 0 | 12 | 0 | 0 |47 |
| Agent 2 | 0 | 10 | 0 | 0 | 14 |28 |
| Agent 3 | 0 | 0 | 0 | 100 | 0 |100 |
| Agent 6 | 0 | 0 | 0 | 9 | 0 | 9 |
+---------+----+----+----+-----+----+----+

下面粘贴了我正在使用的 PHP 代码。

<table width="100%" border="1" cellspacing="4" cellpadding="1">
<tr>
<td>&nbsp;</td>
<?php
for ($i=01; $i<=31; $i++)
{?>
<td><?php echo $i; ?></td>
<?php

}
?>
<td>Total</td>
</tr>
<?php

$query4 = "SELECT bill.agent_id, bill.date, SUM(bill.amount + bill.cheque) AS total, bill_agents.id,bill_agents.name ".
"FROM bill, bill_agents ".
"WHERE bill.agent_id = bill_agents.id AND YEAR(date) = YEAR(CURDATE()) AND MONTH(date) = MONTH(CURDATE()) ".
"GROUP BY bill.agent_id , DATE(bill.date) ".

// "GROUP BY bill.agent_id , DATE(bill.date) ".
"ORDER BY bill.date ASC";

$result4 = mysql_query($query4) or die('Error, query failed1');
if (mysql_num_rows($result4)>0){
mysql_data_seek($result4, 0);

?>
<?php $total_1 = 0; while($row4 = mysql_fetch_array($result4, MYSQL_ASSOC)){?>
<?php $date = $row4['date'];

$var = $date;
$date = date("d-m-Y", strtotime($var) );
$date=substr($date, 0, -8);

echo $date;

?>
<tr>
<td><?php echo $row4['name']; ?></td>
<?php
for ($i=01; $i<=31; $i++)
{?>
<td><?php if ($date == $i) echo $row4['total']; ?></td>
<?php

}
?>
<td></td>
</tr>
<?php } } ?>
<tr>
<td colspan="31"></td>
<td>Total</td>
<td></td>
</tr>
</table>

最佳答案

因为我不知道我是否理解您的问题,这里有一个简短的示例可以为您指明正确的方向:

$query4 = "SELECT bill.agent_id, "
. " bill.date, "
. " SUM(bill.amount + bill.cheque) AS total, "
. " bill_agents.id, "
. " bill_agents.name "
. "FROM bill, bill_agents "
. "WHERE bill.agent_id = bill_agents.id "
. "AND YEAR(date) = YEAR(CURDATE()) "
. "AND MONTH(date) = MONTH(CURDATE()) "
. "GROUP BY bill.agent_id, DATE(bill.date) "
. "ORDER BY bill.date ASC";

$result4 = mysql_query($query4) or die('Error, query failed1');
if (mysql_num_rows($result4) > 0) {
mysql_data_seek($result4, 0);

$agents = array();
while (true == ($row4 = mysql_fetch_assoc($result4))) {
$agents[$row4['agent_id']][$row4['date']] = $row4;
}

var_dump($agents);
}

查看输出,看看您是否可以进一步使用该 $agents 变量。

关于php - 按 php 中类似的 2 个字段分组并得到总计数结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14232359/

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