Możesz zbudować zautomatyzowany zestaw wyników, używając zmiennych MySQL dla wszystkich dat, które chcesz.
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
Zapytanie wewnętrzne, po prostu dołączam do tabeli użytkowników bez klucza, więc po prostu używam go do przechodzenia przez liczbę X rekordów reprezentujących żądany przedział dnia ... Może to być 30, 100, cokolwiek .... Po prostu tak długo, jak tabela (w tym przypadku użytkownicy) zawiera tyle rekordów, ile oczekujesz.
WTEDY ten wynik tylko dni jest dołączany do tabeli użytkowników, ale tym razem na podstawie JOIN_DATE użytkownika. Prosta COUNT() powinna dać ci to, czego chcesz.
„AllDaysYouWant” to alias przypisany do wewnętrznego zapytania pierwszej części
( select
@curDate := Date_Add(@curDate, interval 1 day) as MyJoinDate
from
( select @curDate := '2012-11-21' ) sqlvars,
Users
limit 18 ) AllDaysYouWant
To zasadniczo stwierdza... Z tabeli użytkowników (ale może być dowolna), podaj mi 18 wierszy danych (przez limit, ale może to być prawie dowolna liczba rekordów, ale potrzebujesz tylko od 22 listopada do 6 grudnia, czyli tylko 14 dni, ale zrobiłem 18 tylko dla zasady, może to być prawie wszystko.Powyżej tabeli Użytkownicy znajduje się (select @curDate :='2012-11-21' ) sqlvars.Każda instrukcja select w zapytaniu, która jest opakowana w nawiasy jako źródło tabeli musi mieć alias, a ponieważ jest to tylko zmienna, której będę używał, nie obchodzi mnie, jaka jest jej nazwa.Tak więc ta kwerenda uruchamia zmienną 21 listopada, a Select @curDate :=Date_Add... blah blah oznacza, że bierze bieżącą wartość @curDate, dodaje do niej 1 dzień (teraz staje się 22 listopada) i przechowuje ją w zwróconym wierszu „MyJoinDate”. Więc teraz to wewnętrzne zapytanie tworzy Twoją tabelę tylko dat, począwszy od 22 listopada do przodu 18 dni danych i ma alias „AllDaysYouWant” dla reszty zapytania do odniesienia.
Dostosowałem zapytanie, które prawdopodobnie było tym, co napotkałeś, do alias.field wszystko w celu wyjaśnienia...