1

次のようなテーブル(dataTbl)があります。

id  date
 1  05-08-2013
 2  10-08-2013
 3  11-08-2013
 4  12-08-2013
 5  12-08-2013
 6  12-08-2013
 7  21-08-2013
 8  22-08-2013
 9  23-08-2013
10  23-08-2013
11  24-08-2013
12  29-08-2013
13  30-08-2013
14  30-08-2013
15  30-08-2013

クエリを実行した後、2013 年 1 月 8 日から 2013 年 8 月 30 日までの間に、次のような出力を取得したいと考えています。

date       entries
01-08-2013 0
02-08-2013 0
03-08-2013 0
04-08-2013 0
05-08-2013 1
06-08-2013 0
07-08-2013 0
08-08-2013 0
09-08-2013 0
10-08-2013 1
11-08-2013 1
12-08-2013 3
13-08-2013 0
14-08-2013 0
15-08-2013 0
etc., etc.,

MySQLクエリでこれを行う方法は? 私を助けてください!

テーブルには、5 番目、10 番目、11 番目、12 番目 (3 エントリ)、21 番目、22 番目、23 番目 (2 エントリ) のレコードがあります。

しかし、出力は 01, 02, 03, 04, 05, 06, 07, 08, 09, 10... とエントリ数で始まるはずです。

4

1 に答える 1

2

PHP やストアド プロシージャを使用したくない場合は、all_dates のように、すべての日付を一覧表示する 2 つ目のテーブルが必要になります。

select listdate, count(datatbl.date) from all_dates 
left outer join datatbl on all_dates.listdate = datatbl.date

または代わりに

Select listdate,0 from all_dates where listdate not in (select distinct date from datatbl)
union 
select date, count(*) from databl group by date
于 2013-09-05T17:56:41.487 に答える