sql >> Database teknologi >  >> RDS >> Mysql

Gruppere efter dag og stadig vise dage uden rækker?

MySQL opfinder ikke rækker for dig, så hvis dataene ikke er der, vil de naturligvis ikke blive vist.

Du kan oprette en kalendertabel og deltage i det,

create table calendar (
    day date primary key,
);

Fyld denne tabel med datoer (let med en lagret procedure, eller bare noget generel scripting), op til omkring 2038, og noget andet vil sandsynligvis bryde enhed, der bliver et problem.

Din forespørgsel bliver så f.eks.

SELECT logTime, COUNT(*) 
  FROM calendar cal left join logs l on cal.day = l.logTime 
WHERE day >= '2011-02-01' AND day <= '2011-02-04' GROUP BY day;

Nu kan du udvide kalendertabellen med andre kolonner, der fortæller dig måned, år, uge ​​osv., så du nemt kan producere statistik for andre tidsenheder. (og purister vil måske hævde, at kalendertabellen ville have en id-heltals primær nøgle, som logtabellen refererer til i stedet for en dato)



  1. Hvordan implementerer man husk mig-funktionen?

  2. PDO bindParam problem

  3. PHP - Filtrering efter MySQL-feltværdi

  4. Forebyggelse af SQL-injektion i C