2014-06-14 65 views
1

我試圖根據求和值的結果基於另一列的不同值創建一個數組根據另一列中的不同值求和sql值,並將結果放入數組

我有這兩個專欄月和教訓。列中的月份是授課時的月份名稱(1月,2月...)。在列教訓我有這樣的值(12,7,6,9,11等)

示例值

Month |lessons 
------------------ 
January |12 
January |7 
February |6 
March |9 
March |11 

我想實現的是總結經驗教訓都爲每月然後將這些值放入數組中(例如$ month_values = January Sum,February Sum等)。

示例結果

$month_values = 19,6,20; 

我設法與此查詢

$sth = $db->prepare("SELECT DISTINCT month FROM acc where month!=''"); 
$sth->execute(); 
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0); 
$months = json_encode($result); 

拿到個月,但我在努力獲取值每月

我已搜查在這裏看看是否有人面臨同樣的挑戰,但找不到任何可以幫助我的東西

任何建議如何改變上面的查詢並將課程價值放在數組中?

感謝

+0

@KanagarajM絕對荒謬的 – Strawberry

+0

@KanagarajM這是一個貧窮的解決方案。給我5分鐘,我會發布如何做一個簡單的查詢。 –

+0

@largan請修改您的查詢,如下所示,或在php中使用循環 – Strawberry

回答

2
SELECT month, SUM(lessons) 
FROM lessons_by_month 
GROUP BY month 
ORDER BY MONTH(STR_TO_DATE(month,'%M')) ASC 

上面的查詢將輸出爲您總結的在歷月訂單的經驗教訓。

SQLFIDDLE DEMO

+0

由於某種原因,它不按月排序結果...它始於三月,然後四月,一月,五月,二月,六月 – lStoilov

+1

@largan我已更新我的代碼。請檢查 – fortune

+0

,這是...謝謝! – lStoilov

2
select group_concat(month), group_concat(l) from (

    SELECT month, SUM(lessons) as l FROM lessons_by_month GROUP BY month 

) foo 

會給你

| GROUP_CONCAT(MONTH) | GROUP_CONCAT(L) | 
|-----------------------|-----------------| 
| February,January,June |   2,6,10 | 
2

簡單地說,你在這種情況下,需要的是通過GROUP月份列的行。

SELECT month, SUM(lessons) AS lessons FROM lessons_by_month GROUP BY month 

我還做了一個SQL Fiddle與如果你需要,你可以調整左右。

下面是一個例子輸出的基礎上,從你的問題輸入:

month | lessons 
------------------ 
February | 6 
January | 19 
March | 20 
+0

多數民衆贊成在這很好,但這種方式,我將不得不單獨查詢上市月份和列出的經驗教訓。我寧願使用一個查詢bor既 – lStoilov

+0

而且,我更喜歡使用PDO – lStoilov

+0

請張貼您想要查看的結果。 – colburton

相關問題