我想要做的是創建一個簡單的數組,它將所有我的廣告點擊總和,並給我一個簡單的廣告追蹤器,我正在寫一個計數。在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
完美的輸出
一點也沒有」回答這個問題,但爲什麼你不使用「GROUP BY」? –
他正在使用,但錯誤的方式 –
你的表是什麼樣的? – Adunahay