U kunt een geautomatiseerde resultatenset samenstellen met MySQL-variabelen voor alle gewenste datums.
select
AllDaysYouWant.MyJoinDate,
count( U.User_ID ) as NumberJoined
from
( select
@curDate := Date_Add(@curDate, interval 1 day) as MyJoinDate
from
( select @curDate := '2012-11-21' ) sqlvars,
Users
limit 18 ) AllDaysYouWant
LEFT JOIN Users U
on AllDaysYouWant.MyJoinDate = U.User_JoinDate
group by
AllDaysYouWant.MyJoinDate
De innerlijke vraag, ik voeg me gewoon toe aan de gebruikerstabel zonder sleutel, dus het wordt gewoon gebruikt om door X aantal records te bladeren om de gewenste dagspanne weer te geven ... Dit kan 30, 100 zijn, wat dan ook .... Gewoon zolang de tabel (in dit geval gebruikers), zoveel records heeft als u verwacht.
DAN wordt dat resultaat van niets anders dan dagen toegevoegd aan de gebruikerstabel, maar deze keer op basis van de JOIN_DATE van de gebruiker. De simpele COUNT() zou je moeten geven wat je wilt.
De "AllDaysYouWant" is de alias die is toegewezen aan de interne eerste deelquery van
( select
@curDate := Date_Add(@curDate, interval 1 day) as MyJoinDate
from
( select @curDate := '2012-11-21' ) sqlvars,
Users
limit 18 ) AllDaysYouWant
Dit staat in feite... Van de gebruikerstabel (maar kan elke zijn), geef me 18 rijen met gegevens (via limiet, maar kan bijna elk aantal records zijn, maar je hebt alleen nodig van 22 november tot 6 december, wat alleen 14 dagen, maar ik deed er 18 uit principe, het kan bijna alles zijn. Boven de tabel Gebruikers staat (select @curDate :='2012-11-21' ) sqlvars. Elke select-instructie binnen een query die tussen haakjes staat als een tabelbron moet een alias krijgen en aangezien het slechts een variabele is die ik zal gebruiken, maakt het niet uit wat de naam is. Dus deze query start de variabele op 21 november en de Select @curDate :=Date_Add... blah blah staten om de huidige waarde van @curDate te nemen, er 1 dag aan toe te voegen (nu wordt het 22 november) en deze op te slaan in de geretourneerde rij "MyJoinDate". Dus nu maakt deze innerlijke query uw tabel met alleen datums vanaf 22 november 18 dagen aan gegevens doorsturen en heeft de alias "AllDaysYouWant" voor de rest van de query om naar te verwijzen.
Ik heb de vraag, die je waarschijnlijk bent tegengekomen, aangepast naar alias.field alles voor verduidelijking...