Mysql 每天每个类别的选择计数

标签 mysql sql

我有三张 table 。

类别

id | name

项目

id | name | category_id

订单

id | item_id | date_time | transaction_code

现在,我如何在查询中为每天的每个类别选择具有特定交易代码的总订单。

期望的结果:

Date        Category Total
2013-12-01  001      6
2013-12-01  002      0
2013-12-01  003      1
2013-12-02  001      14
2013-12-02  002      2
2013-12-02  003      0
2013-12-03  001      11
2013-12-03  002      4
2013-12-03  003      4

编写此查询的最有效方法是什么?

这是我到目前为止尝试过的:

SELECT DATE(od.trans_date) AS Date, ct.number AS Category, COUNT(od.id) AS Total 
from orders od
JOIN items im ON od.item_id = im.id
JOIN categories ct ON im.category_id = ct.id
WHERE od.trans_date BETWEEN '2013-12-01 00:00:00' AND '2013-12-03 23:59:59'
AND (od.transaction_code = 17 OR od.transaction_code = 15)
GROUP BY DATE(od.trans_date), ct.number ASC;

谢谢

最佳答案

我建议将您的 JOINS 更改为 LEFT JOINS,以便您的结果将包含没有任何商品的订单...

SELECT DATE(od.trans_date) AS Date, ct.number AS Category, COUNT(od.id) AS Total 
from orders od
LEFT JOIN items im ON od.item_id = im.id
LEFT JOIN categories ct ON im.category_id = ct.id
WHERE od.trans_date BETWEEN '2013-12-01 00:00:00' AND '2013-12-03 23:59:59'
AND (od.transaction_code = 17 OR tr.transaction_code = 15)
GROUP BY DATE(od.trans_date), ct.number ASC;

此外,您可能需要切换 JOINS 的顺序,以便显示所有类别,而不是所有订单。

SELECT DATE(od.trans_date) AS Date, ct.number AS Category, COUNT(od.id) AS Total 
FROM categories ct
LEFT JOIN items im ON ct.id = im.category_id
LEFT JOIN orders od ON im.id = od.item_id
WHERE od.trans_date BETWEEN '2013-12-01 00:00:00' AND '2013-12-03 23:59:59'
AND (od.transaction_code = 17 OR tr.transaction_code = 15)
GROUP BY DATE(od.trans_date), ct.number ASC;

关于Mysql 每天每个类别的选择计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20862154/

相关文章:

php - 在 AngularJs 中使用 MySQL 和 PHP 嵌套 JSON 数据 | ng选项

mysql - 在 MySQL 中计算从两个交易表到第三个交易表的库存

mysql - 在列中插入多个值

mysql - 当slave完成同步时如何自动删除MySql bin日志?

mysql - 有人可以帮助我理解外键 UPDATE 和 DELETE 与关系名称吗?

mysql - 从 MYSQL 子查询中删除

php - 盲算求差 : SQL Injection

sql - 获取聚合数据的 UNION ALL 的替代方案

php - 基于从 ajax 调用返回的获取变量构建查询

mysql - 这个mysql语法有什么错误?