2016-04-07 9 views
0

Web sayfasının sayfalarında kaç tane isabet olduğunu bilmek için bir günlük hakkında bilgi içeren bir tablo var.Bulunan sonuçları bir arada bulundu ve sonuçları bulamadı

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: Aşağıdaki sonuçlanan

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 

:

Bu

bana yukarıdaki gösteren sorgu tarihte desc kullanarak grafik son tarihte başlamalıdır çünkü .

Uyarı: Yukarıdaki tabloda, contact kimse o gün o sayfayı kullanılan anlamı, günde 2016-01-10 mevcut değildir.

0 göstergesini, o tarihte hiçbir şey olmaması durumunda göstermek için almak istiyorum, bunu nasıl başarabilirim? 2016/01/10, 2016/01/11, 2016-01-12

nokta şudur: sonuç aşağıdaki

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) 

gibi olmalı örnek olarak önümüzdeki 3 tarihlerini alır Lets Günlere göre istatistikleri görmek, yukarıdaki tarihleri ​​almak için önümüzdeki kullanın:

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

yukarıdaki sorgu ile IN ve NOT IN ile bir arada çalıştılar ama çalışma alınamıyor.

+0

@RyanVincent evet, ama zaten yukarıdaki sorguda günlerim var. Sadece bunu denedim ve işe yaramazsa, karşılığında herhangi bir değer alamıyorum. – Alpha2k

+0

@RyanVincent DATE (pageview_date) sayfa görünümlerinden GGS (pageview_date) sayfa görüntülemelerini seç – Alpha2k

+0

'a ihtiyaç duyduğum tüm tarihler belki ilginç mi? http://blogs.lessthandot.com/index.php/datamgmt/datadesign/displaying-missing-dates-by-utilizing/. Ayrıca: http://stackoverflow.com/questions/7796401/fill-missing-gaps-in-date-range-query-using-calendar-table?rq=1 –

cevap

0

Ben MySQL DAY işlevi hakkında emin değilim ancak ilk sorgu bakarak ben böyle bir şey yapabileceğini düşünmek -

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

gün (veya tamsayılar) bir tablo oluşturun ve ondan bir LEFT JOIN yapmak Sorgunuz:

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

Daha da iyi bir MariaDB "sıra tablosu" kullanmak daha iyi olurdu.