我尝试做的是创建一个简单的数组,它可以获得我所有广告点击的总和,并让我重新计算一个简单的广告跟踪器,我正在写作。在Stackoverflow上的另一篇文章中,阅读以下解决方案,但它并不优雅。
基本上我们目前正在运行下面列出的6个广告,我们只想将那些几乎组织成阵列的数量放在一个阵列中,这样我们就可以做一个循环来展示广告。当然,在SQL中对计数进行硬编码是没有意义的,因为我们稍后会添加更多广告。我想创建一个do循环来通过每个计数(*)并将它分配给一个变量,但这会导致我们击中mysql服务器太多次了。
是否有一种简单的方法可以将此SQL语句转换为我们可以在PHP中轻松生成的内容。
即。 $ ads = array(' 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 :(得分:1)
SELECT ad, count(1) ct FROM bloggingengineOptins GROUP BY ad;