Questo è come lo faccio. Crea un intervallo di date dal 01-01-2011 al 31-12-2011 :
select
date_format(
adddate('2011-1-1', @num:[email protected]+1),
'%Y-%m-%d'
) date
from
any_table,
(select @num:=-1) num
limit
365
-- use limit 366 for leap years if you're putting this in production
L'unico requisito è il numero di righe in any_table deve essere maggiore o uguale alla dimensione dell'intervallo necessario (>=365 righe in questo esempio). Molto probabilmente lo utilizzerai come sottoquery dell'intera query, quindi nel tuo caso any_table può essere una delle tabelle che usi in quella query.