繁体   English   中英

PHP MySQL的每日结果循环?

[英]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>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM