【问题标题】:Reports by month with php and mysql?使用 php 和 mysql 按月报告?
【发布时间】:2012-12-21 03:05:55
【问题描述】:

我想知道如何使用 PHP 和 Mysql 按月显示报告

网页上的报告示例:

January 2011
==============
Store  Name    |  Total Order Cost
SHOP A         |  £123 
SHOP B         |  £100

February 2011
==============
Store  Name    |  Total Order Cost
SHOP A         |  £123 
SHOP B         |  £100
SHOP C         |  £99.40

我有 mysql 表

tbl_shop

  • 店铺 ID

  • 店铺名称

tbl_order

  • 订单ID

  • 店铺 ID

  • 订单日期

  • 总计

【问题讨论】:

  • 关于如何编写mysql查询或如何使用PHP显示数据,您到底在问什么?
  • @Shakti - 可能两者兼而有之。 @K102 - 按 ShopName 分组?但是这个月呢
  • 您能做的最好的事情就是尝试。之后,如果您有问题,请发布您的代码....

标签: php mysql sql database


【解决方案1】:

您需要遍历查询结果并使用月/年组合作为键创建多维数组。下面的查询应该很好地说明如何从数据库中获取所需的信息。

SELECT 
    MONTH(to.OrderDate), 
    YEAR(to.OrderDate), 
    SUM(to.Total), 
    to.* 
FROM tbl_order as to
INNER JOIN tbl_shop as ts ON ts.ShopID = to.ShopID
GROUP BY to.ShopID, MONTH(to.OrderDate), YEAR(to.OrderDate)

请注意,我尚未测试此查询 - 请将其作为伪代码处理。您可能需要稍微处理一下 GROUP BY 字段并测试它是否有效。

【讨论】:

  • 谢谢。如何在 SQL 中指定年份和月份?例如 2011 年 4 月和 2011 年?
  • 我假设 OrderDate 是您表中的日期时间字段?查看 MySQL 日期函数:dev.mysql.com/doc/refman/5.5/en/…
  • 谢谢韦斯利,我会试一试的!当它确实在页面上显示报告时 - 我希望能够突出/禁用/启用一行(商店名称),这意味着我已经完成了这个过程/任务。这样做的最好方法是什么?添加一个 tbl_order.highlight ?
  • 这个数组可以吗? $report[2009][1][] = array('Shop' => 'Shop Name', 'Total' => 123, );
【解决方案2】:

使用

SELECT ShopName,SUM(Total),MONTHNAME(OrderDate) from tbl_shop
left join tbl_order
on tbl_shop.ShopID = tbl_order.ShopID
GROUP By(ShopID),MONTHNAME(OrderDate)

会给你所有月份的报告。

【讨论】:

  • 谢谢,应该有按店铺ID和SUM(tbl_order.Total)分组的吧?
  • 重复查询?为什么?只需将 MONTHNAME(Orderdate) 添加为您选择的字段并按 ShopID、MONTHNAME(Orderdate) 分组。无需多次执行该查询。
【解决方案3】:

使用这个查询:

SELECT monthname(o.OrderDate) as Month, year(o.OrderDate) as Year,
  s.ShopName, sum(o.Total) as Total
FROM tbl_Shop s JOIN tbl_Order o
  ON s.ShopID=o.ShopID
GROUP BY o.shopID,year(o.Orderdate),month(o.Orderdate)
ORDER BY year(o.OrderDate),month(o.OrderDate)

然后对于结果中的每一行,如果月+年发生了变化(变量 $last_date 可能会有所帮助)然后打印

$Month $Year
==============
Store  Name    |  Total Order Cost
$ShopName      |  $Total

其他打印

$ShopName      |  $Total

【讨论】:

  • 如何识别月份+年份已更改??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多