2016-04-26 16 views
0

1つのデータベース内に複数のMySQLテーブルがあります。各テーブルには、各トランザクションがいつ発生したかを記録するDATETIMEフィールドがあります。MySQLの個数は、複数のテーブルから、日付でグループ化されます。

MySQLのクエリまたはプロシージャを作成して、各テーブルのトランザクション数を各日付ごとにグループ化する方法を教えてください。

現在の月の初めから現在までの各日の合計を確認したいと思います。

各テーブルでは、1つの行が1つのトランザクションを表します。したがって、列は各日付の各表の行の数にすぎません。

たとえば、このようなクエリを実行すると、今日、次のようなテーブルが生成されます。

26/04/2016合計A取引、総B取引、...

25/04/2016合計A取引、総B取引、...

....

01/04/2016合計トランザクション、合計Bトランザクション、...

サンプルスキーマ;

tableBuuid BIGINT(20)UNSIGNED NOT NULL AUTO_INCREMENTをCREATE

tableAuuid BIGINT(20)UNSIGNED NOT NULL AUTO_INCREMENTをCREATE

creationTime DATETIME NOT NULL、..、 creationTime DATETIME NOT NULL ..

...

+0

あなたは 'GROUP BY句'を使ってみましたか?あなたの質問をあなたのデータベーススキーマと、おそらくいくつかのサンプルデータで更新することはできますか? – Maximus2012

+0

こんにちはMaximus2012、例、切り捨てられたテーブルスキーマが追加されました。 –

+0

本当にここに複数のテーブルが必要ですか、それとも1つのテーブルなどに組み合わせることはできますか? – Maximus2012

答えて

1

私は、tableAに少なくとも1つのトランザクションが1日あると仮定します。

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

錫よ、ありがとう、それは私が必要としたもので、うまく働いている。 –

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

ユニオンを使用することができます。 – scaisEdge

+0

'year'のフィルタが必要な場合があります – Tin

関連する問題