2011-06-07 53 views
0

我想知道如何通過每月使用PHP和MySQL用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

  • ShopID

  • SHOPNAME

tbl_order

  • 的OrderID

  • ShopID

  • 訂購日期

  • 合計

+0

你到底在問什麼如何寫mysql查詢或如何使用PHP顯示數據? – 2011-06-07 10:23:44

+2

'group by'是你的朋友 – k102 2011-06-07 10:24:37

+0

@Shakti - 可能都是。 @ K102 - 由ShopName分組?但是這個月怎麼樣 – user622378 2011-06-07 10:29:11

回答

2

您需要遍歷查詢結果並使用月/年組合作爲關鍵字創建多維數組。下面的查詢應該很好地說明如何從數據庫中獲取所需的信息。

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字段並測試它是否有效。

+0

謝謝。如何在SQL中指定年份和月份?如四月和2011年? – user622378 2011-06-07 10:33:12

+0

我假設OrderDate是表中的日期時間字段?查看MySQL日期函數:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_month – 2011-06-07 10:34:35

+0

謝謝韋斯利,我會放手一搏!當它在頁面上顯示報告時 - 我希望能夠突出顯示/禁用/啓用一行(商店名稱),這意味着我已完成此過程/任務。這樣做的最好方法是什麼?添加一個tbl_order.highlight? – user622378 2011-06-07 10:43:59

1

使用

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) 

會給你所有月份的報告。

+0

謝謝,應該有一個按商店ID和SUM(tbl_order.Total)分組? – user622378 2011-06-07 10:34:15

+0

重複查詢?爲什麼?只需將MONTHNAME(訂單日期)添加爲您選擇的字段並按ShopID MONTHNAME(Orderdate)進行分組即可。沒有必要多次執行該查詢。 – 2011-06-07 10:40:07

+0

謝謝@Berry Langerak,答案更新。 – 2011-06-07 10:57:38

0

使用此查詢:

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 
+0

如何識別當月+年份已經改變? – bungdito 2011-10-08 05:34:42