2014-04-16 56 views
0

我想要做的是創建一個簡單的數組,它將所有我的廣告點擊總和,並給我一個簡單的廣告追蹤器,我正在寫一個計數。在Stackoverflow的另一篇文章中,閱讀下面的解決方案,但它並不優雅。MYSQL計數(*)在多個類別

基本上我們目前正在運行下面列出的6個廣告,我們只是希望將這些幾乎組織到一個數組中,以便我們可以做一個循環來展示廣告。自然,在SQL中對計數進行硬編碼是沒有意義的,因爲我們稍後會添加更多的廣告。我想過創建一個do循環來遍歷每個數(*)並將其分配給一個變量,但這會導致我們無法訪問mysql服務器。

是否有一種簡單的方法將此SQL語句轉換爲我們可以在PHP中輕鬆生成的內容。

即$ =廣告陣列( 'MONEY1', 'money2', 'money3', 'ST1', 'ST2', 'ST3')

你將如何得到計數回來了?這是最好的方式嗎?

mysql> SELECT ad, 
    SUM(ad = 'money1') AS ct, 
    SUM(ad = 'money2') AS ct, 
    SUM(ad = 'money3') AS ct, 
    SUM(ad = 'st1') AS ct, 
    SUM(ad = 'st2') AS ct, 
    SUM(ad = 'st3') AS ct 

FROM bloggingengineOptins 
GROUP BY ad; 

這是輸出

+--------+------+------+------+------+------+------+ 
| ad  | ct | ct | ct | ct | ct | ct | 
+--------+------+------+------+------+------+------+ 
| NULL | NULL | NULL | NULL | NULL | NULL | NULL | 
|  | 0 | 0 | 0 | 0 | 0 | 0 | 
| 7230 | 0 | 0 | 0 | 0 | 0 | 0 | 
| money1 | 11 | 0 | 0 | 0 | 0 | 0 | 
| money2 | 0 | 12 | 0 | 0 | 0 | 0 | 
| money3 | 0 | 0 | 10 | 0 | 0 | 0 | 
| st  | 0 | 0 | 0 | 0 | 0 | 0 | 
| st1 | 0 | 0 | 0 | 3 | 0 | 0 | 
| st2 | 0 | 0 | 0 | 0 | 4 | 0 | 
| st3 | 0 | 0 | 0 | 0 | 0 | 4 | 
+--------+------+------+------+------+------+------+ 
10 rows in set 

mysql> 

應用 '修復' 下面的表格後,現在看起來是這樣的:

SELECT ad, count(1) ct FROM bloggingengineOptins GROUP BY ad; 

+--------+-----+ 
| ad  | ct | 
+--------+-----+ 
| NULL | 13 | 
|  | 915 | 
| 7230 | 1 | 
| money1 | 11 | 
| money2 | 13 | 
| money3 | 10 | 
| st  | 1 | 
| st1 | 6 | 
| st2 | 11 | 
| st3 | 6 | 
+--------+-----+ 
10 rows in set 

完美的輸出

+0

一點也沒有」回答這個問題,但爲什麼你不使用「GROUP BY」? –

+0

他正在使用,但錯誤的方式 –

+0

你的表是什麼樣的? – Adunahay

回答

1
SELECT ad, count(1) ct FROM bloggingengineOptins GROUP BY ad; 
+0

這樣做!哇 - 這麼簡單和'常識' - 輸出完全按照我想要的方式工作。謝謝謝謝! – Viktor