[英]Php Mysql Daily Results in loop?
<?php
$query4 = "SELECT bill.agent_id, bill.date, bill.amount, bill.cheque, 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()) ".
"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 while( $row4 = mysql_fetch_array( $result4, MYSQL_ASSOC ) ) { ?>
<tr>
<td><?php echo $row4['name']; ?></td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<?php } } ?>
</table>
直到这里这段代码对我来说都很好
billTable结构
bill_agents表结构
当前结果显示http://i.stack.imgur.com/tMH3P.jpg
我要显示的结果是我想要每日收款报告的第1天到第31天(并且也应按金额和支票的总和)如何
结果应该是这样的http://i.stack.imgur.com/S08or.jpg
另外,在使用"GROUP BY bill.agent_id".
时出现错误"GROUP BY bill.agent_id".
在上面使用的相同SQL和下面粘贴的SQL中。
$query4 = "SELECT bill.agent_id, bill.date, bill.amount, bill.cheque, 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".
"ORDER BY bill.date ASC";
一个基本的答案将是这样的:
选择bill.agent_id,bill.date,bill.amount,bill.cheque,bill_agents.id,bill_agents.name,SUM(bill.amount)“。 “ WHERE YEAR(date)= YEAR(CURDATE())和MONTH(date)= MONTH(CURDATE())”。
“ GROUP BY bill.agent_id”。 “按帐单日期ASC订购
但是,最大的问题是代理人很多天都没有任何活动。 当需要一个用于生成每月日期(可能只是添加到该月第一天的一系列数字中的一部分)的表时,您可以将其与业务代表交叉连接以获取业务代表和业务代表的所有可能组合一个月中的某天。 您留下来的那对帐单表。
发挥更多作用。 没有经过测试,可能有一些错别字,也不太确定要总结的数字,但希望能给您这个想法。
SELECT bill.agent_id, MonthDays.DayOfMonth, bill.date, bill.amount, bill.cheque, bill_agents.id,bill_agents.name , SUM(bill.amount)
FROM bill_agents
CROSS JOIN (SELECT a.i+b.i*10 AS DaysToAdd, LAST_DAY(NOW()) - (a.i+b.i*10) AS DayOfMonth
FROM integers a, integers b
HAVING DaysToAdd < DAY(LAST_DAY(NOW()))) MonthDays
LEFT OUTER JOIN bill ON bill.agent_id = bill_agents.id AND bill.date = MonthDays.DayOfMonth
GROUP BY bill.agent_id
ORDER BY bill.date ASC, MonthDays.DayOfMonth
请尝试以下查询。 GROUP_CONCAT
将为您提供支票号码列表以及sum of all the check amount that belongs to one agent
。
SELECT
bill.agent_id,
bill.date,
SUM(bill.amount),
GROUP_CONCAT(bill.cheque),
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
ORDER BY bill.date ASC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.