2016-04-07 19 views
0

ログに関する情報を持つ表があり、ウェブサイトのページにヒット数がいくつあるかを知ることができます。組み合わせた結果が見つかりませんでした。結果は見つかりませんでした。

Page Day  view_count 
index 2016-01-12 50 
index 2016-01-11 10 
index 2016-01-10 20 
contact 2016-01-12 5 
contact 2016-01-11 5 

PD:以下に結果の

select pageview_page, DATE(pageview_date) as pageview_date, count(*) as view_count 
    from pageviews 
     group by pageviews.pageview_page, DAY(pageviews.pageview_date) 
     order by pageviews.pageview_date desc 

この

は私に上記を表示するクエリで日付に descを使用して、チャートは、最新の日付に開始する必要がありますので、 。

注意:上記の表のcontactは、誰もがその日に、そのページを使用しないことを意味、その日2016-01-10上に存在しません。

この日付に何もない場合は、0と表示するようにクエリを取得したいのですが、どのように達成できますか? 2016年1月10日、2016年1月11日、2016年1月12日

ポイントである:結果は以下

Page Day  view_count 
index 2016-01-12 50 
index 2016-01-11 10 
index 2016-01-10 20 
contact 2016-01-12 5 
contact 2016-01-11 5 
contact 2016-01-10 0 <-------- (I want this to appear, as it is missing in the table above, in the first table) 

ようにする必要があり、一例として、次の3日を取ることができます日によって統計情報を表示する、私は上記の日付を取得するには、次を使用します。

select DATE(pageview_date) as pageview_date from pageviews GROUP by DAY(pageview_date) 

は、私は上記のクエリでINNOT INとの組み合わせを試してみましたが、私はそれが働いて得るカント。

+0

@RyanVincent yea、しかし私はすでに上記のクエリで日数を持っています。私はちょうどそれを試み、doesntは働くようである、私はどんな価値も得られない。 – Alpha2k

+0

@RyanVincent DAY(pageview_date)をpageviewsのpageview_dateとして選択します。GROUPをDAY(pageview_date)までに必要なすべての日付があります。 – Alpha2k

+0

はおそらく面白いですか? http://blogs.lessthandot.com/index.php/datamgmt/datadesign/displaying-missing-dates-by-utilizing/。また:http://stackoverflow.com/questions/7796401/fill-missing-gaps-in-date-range-query-using-calendar-table?rq=1 –

答えて

0

私はMySQLでDAY機能についてはわかりませんが、あなたの最初のクエリを見ることによって、私はあなたがこのような何かを行うことができると思う -

select T2.pageview_page AS pageview_page, 
     T1.pageview_date AS pageview_date, 
     (select count(*) 
      from pageviews t3 
     where t3.pageview = t2.pageview 
      and DAY(t3.pageview_date) = t1.pageview_date) as view_count 
    from (select distinct DAY(pageview_date) pageview_date FROM pageviews) t1, 
     (SELECT DISTINCT pageview_page FROM pageviews) t2 
group by pageview_page, pageview_date 
order by pageview_date desc 
0

日(または整数)のテーブルを作成し、それからLEFT JOINを行いますあなたのお問い合わせに:

SELECT ... 
    FROM AllDays a 
    LEFT JOIN (your query) b ON b.date = a.date 
    WHERE a.date BETWEEN ...; 

MariaDBの "シーケンステーブル"を使用することもできます。