mySQL ziyaretleri seçin ve aya göre görüntülemek?

2 Cevap php

Şu anda yol MySQL sorgular ve sözdizimi için benim yukarıda ağırlığı deldiriyorum. Ben şu ulaşmada bazı yardımı ile yapabilirsiniz: -

Ben arka arkaya ziyaret ülke ile bir ölçümler / analitik tablo var. Ben aşağıdaki sorgu var: -

SELECT `country`, COUNT(`ip`) AS `cViews` FROM `metrics` WHERE `projID` = 'projID' AND `country` != 'XX' AND `when` BETWEEN '$dateFrom' AND '$dateTo' GROUP by country

Not; when bir zaman damgası alandır.

Hangi belirli bir süre ülkeye başına ziyaretlerin sayısını alır. Güzel. Dandy, bir diyebilirsiniz.

Ben şimdi ne gerek, (ben sorgu ile sadece yardıma ihtiyacım var, görüntüleme unutmak) bir tablo görüntülemek için hangi yapabilirsiniz grup o ayın bir başlığı altında her ay içine ziyaretler. Yani Her ay için Ülke / Ziyaretçi. Muhtemelen '2009-06-00 'AND '2009-06-30' üstündeki değişkenlere beyan eden tarihleri ​​ile ARASINDAKİ bir zaman damgası ile belirtilmiş.

Yani katları almak gerekir: -

`id`   `ip`  `country`   `etc`
 1     24.124    uk    thisthat

Için: -

`country`     `Jan`     `Feb`
 UK             44       77

vb

Şimdi, AS isimlerini ilan ettiği burada daha önce yardım yaşadım, ama bu sorgunun potansiyel karmaşıklığı beni frigtening ve select sorguları iç içe bile, bunu nasıl emin değilim.

Doğru yönde herhangi bir tavsiye veya işaretleme minnetle aldı.

2 Cevap

MySQL (belirli bir ay içinde bir ülke için tüm kayıtları saymak istiyorum yani, sen edersin öylesine tarafından grup için bir zaman damgası alanı ayrıştırmak, yanı sıra kullanabileceğiniz, date and time functions bir numarası vardır ülke ve yıl / ay grubu). Örneğin, zaman damgası yıl ve aya göre gruplandırılmış ise:

SELECT `country`, COUNT(`ip`) AS `cViews`,
  YEAR(`when`) AS `year`, MONTH(`when`) AS `month`
FROM `metrics`
WHERE `projID` = 'projID'
  AND `country` != 'XX'
  AND `when` BETWEEN '$dateFrom' AND '$dateTo'
GROUP BY country, YEAR(`when`), MONTH(`when`)

Sizin sonuç kümesi gibi bir şey olacaktır

country  cViews  year  month
UK       44      2009  7
UK       75      2009  6
 ...

Ve sonra size arzu çıkış biçimi içine verileri düzenlemek için PHP kullanabilirsiniz.

Eğer (sütunlara satırları haritalama) arıyor tekniği dönme denir.

Ne yazık ki, dinamik sütun sayısı gerektirdiğinden, bu MySQL iyi ne olduğunu değil, ve SQL Paradigma programlama statik sütun sayısı anlamına gelir.

Sen aşağıdakileri yapabilirsiniz:

SELECT  country,
        (
        SELECT  COUNT(*)
        FROM    metrics mjan
        WHERE   MONTH(mjan.`when`) = 1
                AND mjan.country = mo.country
        ) AS `Jan`,
        (
        SELECT  COUNT(*)
        FROM    metrics mfeb
        WHERE   MONTH(mfeb.`when`) = 2
                AND mfeb.country = mo.country
        ) AS `Feb`,
        …
FROM    metrics mo
GROUP BY
        country

, Ya da, daha iyisi, bu sorguyu çalıştırın:

SELECT  country, MONTH('when'), COUNT(*)
FROM    metrics mo
GROUP BY
        country, MONTH(`when`)

ve php tarafında sonuçlarını ayrıştırmak