基于多个列进行分组和操作

时间:2012-02-07 23:13:26

标签: php mysql sorting group-by

我有一个表在网站上使用某个功能时插入一行并标记日期。

code-/----date----/--type
-----/------------/------
--1--/--2012-2-1--/-used
--1--/--2012-2-3--/-saved
--1--/--2012-1-3--/-printed
--2--/--2012-2-1--/-used
--2--/--2012-2-2--/-printed

我必须报告今天,昨天或上个月(日期范围)代码1(打印或保存或使用)的次数

我从这开始:

$stat_query = mysql_query("SELECT code, type, date FROM tracking WHERE code IN ('$htL','$htG','$htR') GROUP BY code, type, date");

我使用IN操作数,因为每个用户有3个代码可以跟踪每种类型的无限日期条目。

我真的很想知道该怎么做。

2 个答案:

答案 0 :(得分:0)

您需要构建日期范围并修改查询。以下是显示过去一天code的计数的示例:

SELECT `code`, COUNT(`code`) as code_cnt 
FROM tracking 
WHERE 
    `code` IN ('$htL','$htG','$htR') AND
    `date` BETWEEN DATE_SUB(now(), INTERVAL 1 HOUR) AND now()
GROUP BY `code`

查看DATE_SUB文档以获取进一步的帮助

答案 1 :(得分:0)

此示例中的

GROUP BY代码,类型,日期使其仅返回一条记录。因为所有代码行都会在不同的输出行中进行求和,所以类型也会越来越少。请检查您的GROUP BY字段。