Ya resolví el problema. El tema de porqué no me salían las fechas con 0 reservas era porque estaba poniendo una condición dentro de la cláusula "where" de la consulta en vez de meterla dentro de la clausula "on" del Left Join. Al final, la consulta me queda algo como esto:
Código SQL:
Ver originalSELECT calendario.DATE AS DIAS_RESERVAS, COUNT(reservas.ident) AS NUM_RESERVAS FROM calendario LEFT JOIN reservas ON calendario.DATE=DATE_FORMAT(reservas.fechareserva, '%Y-%m-%d')
AND reservas.tipo=2
WHERE calendario.DATE BETWEEN "2015-05-18" AND "2015-05-26"
GROUP BY DIAS_RESERVAS
El problema que veo ahora es que la consulta es muy lenta (Me tarda más de 12 segundos). La tabla "calendario" sólo contiene un campo llamado "date" y contiene registros con valores que van desde "2010-01-01" hasta "2020-01-01". La tabla "reservas" en cambio puede tener sobre 500.000 registros.
Hay alguna manera de poder agilizar la consulta anterior??? Porque es poco viable esperar tanto tiempo :(