2016-04-26 49 views
0

我有多个MySQL表,在一个数据库内,每个记录事务执行。每个表都有一个DATETIME字段来记录每个事务发生的时间。MySQL的个人计数,从多个表,按日期分组

我该如何构建一个MySQL查询或过程,以根据每个日期分组来生成每个表中的事务计数?

我想要查看从当前月份开始直到当天(包括当天)在内的每个天数。

在每个表中,一行表示一个事务。所以列只是每个表中的行数,对于每个日期。运行这样的查询的今天,将产生如下的表格;

26/04/2016 A共计成交,B共计交易,...

25/04/2016 A共计成交,B共计交易,...

....

01/04/2016总计A交易量,总计B交易量,...

示例模式;

CREATE TABLE tableAuuid BIGINT(20)UNSIGNED NOT NULL AUTO_INCREMENT, creationTime DATETIME NOT NULL,..

CREATE TABLE tableBuuid BIGINT(20)UNSIGNED NOT NULL AUTO_INCREMENT, creationTime DATETIME NOT NULL,..

...

+0

您是否尝试过使用'GROUP BY子句'?你还可以用你的数据库模式和可能的一些示例数据更新你的问题吗? – Maximus2012

+0

嗨Maximus2012,例如,添加了截断表模式。 –

+0

你真的需要在这里多个表吗?或者你可以将它们组合成一张表或类似的东西? – Maximus2012

回答

1

我假设tableA每天至少有一笔交易。

select create_time, total_a_transaction, total_b_transaction, ... 
from 

(select date(creationTime) create_time, count(*) total_a_transaction 
from tableA 
where year(creationTime) = year(curdate()) 
and month(creationTime) = month(curdate()) 
group by date(creationTime)) transaction_a 

left join 

(select date(creationTime) create_time, count(*) total_b_transaction 
from tableB 
where year(creationTime) = year(curdate()) 
and month(creationTime) = month(curdate()) 
group by date(creationTime)) transaction_b 

using (create_time) 

left join ... 
+0

Thankyou Tin,这正是我所需要的,并且运作良好。 –

2
select date(my_date), count(*), 'tableA' fromc tableA 
where month(my_date) = month(curdate()) 
AND year(my_date) = Year(curdate()) 
group by date(my_date) 
union 
select date(my_date), count(*), 'tableB' fromc tableB 
where month(my_date) = month(curdate()) 
AND year(my_date) = Year(curdate())  
group by date(my_date) 
+0

嗨scaisEdge,它的多表。我刚刚更新了这个问题,希望能够使多个表格元素更清晰。 –

+1

您可以使用union .. – scaisEdge

+0

您可能需要过滤'年份' – Tin