我有一个存储事务日志的数据库,我想计算当天的所有日志并根据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
有什么建议吗?
答案 0 :(得分:0)
在DISTINCT
上使用COUNT
和PROD_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
绑定值。