如何根据项目和今天的日期对mysql进行分组

时间:2014-05-15 11:50:19

标签: mysql

我有一个存储事务日志的数据库,我想计算当天的所有日志并根据prod_id对它们进行分组

MySQL表结构:

表名= products

+------+---------+------------+--------+
| ID   | PROD_ID | DATE       | PERSON |
+------+---------+------------+--------+
|    1 |       2 | 1400137633 |      1 |
|    2 |       2 | 1400137666 |      1 |
|    3 |       3 | 1400137125 |      2 |
|    4 |       4 | 1400137563 |      1 |
|    5 |       2 | 1400137425 |      2 |
|    6 |       3 | 1400137336 |      1 |
+------+---------+------------+--------+

MYSQL代码

 $q = 'SELECT count(ID) as count 
         FROM PRODUCTS 
        WHERE PERSON ='.$db->qstr($person).' 
          AND DATE(FROM_UNIXTIME(DATE)) = DATE(NOW())';

所以我得到的是给定日期的项目数。由于日期与所有其他条目相同。但是我想通过prod_id对项目进行分组,我尝试了GROUP BY PROD_ID但是没有给我我想要的东西。如果PROD_ID为多个且日期与一个条目相同,我希望它分组,同时仍然计算其他条目

所以在这里我应该得到一个输出($ Person = 1).... 2 + 2 + 2 = 1 + 3 + 4所以总数应该是3

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

DISTINCT上使用COUNTPROD_ID

示例

SELECT count( distinct PROD_ID ) as count 
 FROM PRODUCTS 
 WHERE PERSON = 1  -- <---- change this with relevant variable
   AND DATE( FROM_UNIXTIME (DATE ) ) = curdate();

我建议您使用Prepared Statement绑定值。