【发布时间】:2011-02-08 15:00:33
【问题描述】:
我有一个关于“分组依据”的查询:
SELECT date_audience,
Sum( If( quality_apuration = '1', 1, 0 ) ) AS very_good,
Sum( If( quality_apuration = '2', 1, 0 ) ) AS good,
Sum( If( quality_apuration = '3', 1, 0 ) ) AS bad,
Sum( If( quality_apuration = '4', 1, 0 ) ) AS no_apuration,
Count(quality_apuration) AS total
FROM pp_base
WHERE date_audience >= '2011-01-01' AND date_audience <= '2011-02-28'
GROUP BY date_audience ORDER BY date_audience ASC
在哪里返回以下结果(或查看http://jsbin.com/imuru5/):
由于表 X 有另一个表 Y 的外键,最终有人会要求在表 Y 中再包含一项,例如:'exccelent'、'regular' 等。我还必须调整安排为 php $query[0]['very_good']、$query[0]['good']、$query[0]['bad'] 等,在其他项目中添加,花费更多时间。
有没有人知道我可以如何改进这个查询,以自动化结果?
谢谢,维尼修斯。
【问题讨论】:
-
我在您的查询中没有看到任何 GROUP BY。
-
确保 date_audience 已编入索引。另外,不要使用 if/sum。您可以使用普通 count() 进行此查询
-
我认为任何自动化的尝试都需要构建动态 SQL。