Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta between retorno valores

Estas en el tema de Consulta between retorno valores en el foro de Mysql en Foros del Web. Hola amigios necesito lo siguiente tengo una tabla con varios datos tengo esta consulta la cual me deuelve todos los datos entre esos dias, lo ...
  #1 (permalink)  
Antiguo 21/08/2014, 21:59
 
Fecha de Ingreso: noviembre-2006
Mensajes: 19
Antigüedad: 17 años, 4 meses
Puntos: 0
Consulta between retorno valores

Hola amigios necesito lo siguiente tengo una tabla con varios datos
tengo esta consulta la cual me deuelve todos los datos entre esos dias, lo que necesito tambien es que si no encuentra un registro entre esos dias, si no existe devuelva esa fecha como null

SELECT FECHA, CANTIDAD, MONTO FROM RESUMEN WHERE FECHA BETWEEN '2014-08-01' AND '2014-08-07'

EJEM TABLA RESUMEN

FECHA CANTIDAD MONTO
2014-08-01 12 1000
2014-08-02 12 1000
2014-08-05 12 1000
2014-08-06 12 1000
2014-08-07 12 1000

ejemplo lo que necesito es que la consulta retorne lo sigueinte, los datos que no existen en la tabla devolverlos como null
FECHA CANTIDAD MONTO
2014-08-01 12 1000
2014-08-02 12 1000
2014-08-03 NULL NULL
2014-08-04 NULL NULL
2014-08-05 NULL NULL
2014-08-05 12 1000
2014-08-06 12 1000
2014-08-07 12 1000
  #2 (permalink)  
Antiguo 22/08/2014, 05:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta between retorno valores

Esta es una pregunta que ya han hecho anteriormente varias veces, en todos los subforos de Bases de Datos, y la respuesta es simple: No se puede...
Pero requiere una explicación y una alternativa.

El tema es asi: Los DBMS trabajan con datos reales, es decir, con los datos que efectivamente existen en las tablas, y si los datos no están allí, y no se pueden obtener por cálculo, relación o transformación, entonces no se los puede devolver.
En ese sentido, si no existe ninguna parte de donde sacar esas fechas, no hay cómo obtener los nulos en una consulta simple.
¿Cuál es la alternativa?
Bueno, hay dos:
1) Crear una tabla temporal con la secuencia completa de días del rango buscado y usarla con en la consulta por medio de LEFT JOIN, de modo que permita ubicar que en esas fechas no hay datos en base.
2) Crear las líneas con datos nulos en las vistas del navegador, a medida que vas recorriendo los datos devueltos de la base, a fin de rellenar los saltos entre fechas sin datos. Es algo que se realiza por programación y ajeno a este foro.

Tu decides...

Por cierto, la solución de una tabla temporal requiere usar stored procedures, no simples queries.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: registro, retorno, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:31.