Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/10/2015, 12:51
aeb_asturias
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 2 meses
Puntos: 7
Problema al obtener número de registros agrupados por fecha

Hola a todos/as,

Tengo un problema sobre una consulta select que no veo manera de resolver. La duda es la siguiente:

Tengo una tabla "reservas" que entre sus campos hay uno llamado "fechareserva" que como su nombre indica almacena la fecha en la cual se ha hecho una reserva. Necesito sacar el número de reservas que se han realizado en un periodo de tiempo agrupadas por días. Por ejemplo:

Fecha Cantidad
01/10/2015 3
02/10/2015 5
03/10/2015 10
-----------------------------------

Para ello, ejecuto una consulta select como la siguiente:

select fechareserva as Fecha, count(*) as Cantidad from reservas where fechareserva between "01/10/2015" and "10/10/2015" group by Fecha

El resultado que obtengo es algo como lo siguiente:

Fecha Cantidad
01/10/2015 2
03/10/2015 15
05/10/2015 20
08/10/2015 5
10/10/2015 4


Como se puede observar, no me devuelve el número de reservas para los días 2,4,6,7,9 de Octubre del 2015. Por lo que he visto, en esos días el número de reservas es 0.

Yo necesito que me devuelva también esos días aunque el número de reservas sea cero, es decir, que obtenga algo como lo siguiente:


Fecha Cantidad
01/10/2015 2
02/10/2015 0
03/10/2015 15
04/10/2015 0
05/10/2015 20
06/10/2015 0
07/10/2015 0
08/10/2015 5
09/10/2015 0
10/10/2015 4


¿Existe alguna manera de hacerlo?

Como dato extra, tengo una tabla llamada "Calendar" con un único campo llamado "fecha" que contiene registros que representan las fechas que comprenden el periodo del 01/01/2009 hasta el 01/01/2020. No se si con esa tabla combinándola con la de "reservas" es posible obtener el resultado que yo quiero. Lo he intentado combiando ambas tablas con un left join por ejemplo pero tampoco he conseguido lo deseado.

Espero que alguien arroje algo de luz al problema.


Saludos.

Última edición por aeb_asturias; 15/10/2015 a las 13:05