Ще трябва да се присъедините към друга таблица, която има поне 30 реда, за да създадете всички дати, които не съществуват в набора от данни. Нещо като:
select * from(
select curdate() - interval @rn := @rn + 1 day as last_30_date
from table_with_at_least_30_rows
join (select @rn := -1) rows limit 30
) days
left join (select curdate() as data_date) d on last_30_date = data_date;
Заменете select curdate() as data_date
с вашето запитване.