2016-04-07 92 views
0

我有一個表格,其中包含有關日誌的信息,以瞭解網站頁面上有多少點擊。結合找到結果未找到結果

這是一個讓我看到上面的查詢:

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 

導致如下:

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:對日採用desc因爲圖表必須在最新的日期開始。

注意:在上表中,contact不存在於第2016-01-10日,這意味着當天沒有人使用該頁面。

我想要查詢顯示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 
contact 2016-01-10 0 <-------- (I want this to appear, as it is missing in the table above, in the first table) 

讓我們接下來的3個日期作爲一個例子:2016年1月10日,2016年1月11日,2016年1月12日

的要點是查看一天的統計數據,我用的是未來獲得上述日期:

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

我已經嘗試了組合INNOT IN與上面的查詢,但我不能讓它工作。

+0

@RyanVincent是的,但我已經有了上述查詢的日子。我剛剛嘗試過,似乎沒有工作,我沒有得到任何回報。 – Alpha2k

+0

@RyanVincent選擇DATE(pageview_date)作爲pageview_date從pageviews GROUP by 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「序列表」。