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

Problema con consulta sql

Estas en el tema de Problema con consulta sql en el foro de Bases de Datos General en Foros del Web. Intento sumar datos de una consulta de la forma "select sum(valores) from tabla where...". El problema no es la sintaxis. Resulta que la tabla no ...
  #1 (permalink)  
Antiguo 10/12/2008, 11:11
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 1 mes
Puntos: 15
Problema con consulta sql

Intento sumar datos de una consulta de la forma "select sum(valores) from tabla where...". El problema no es la sintaxis. Resulta que la tabla no tiene datos entonces ya conocen el error que se genera por NULL.

Como validar este problema por medio de SQL conociendo que el sistema es un AS400.
  #2 (permalink)  
Antiguo 10/12/2008, 22:25
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 3 meses
Puntos: 7
Respuesta: Problema con consulta sql

¿Y si ponés el valor por defecto en 0? ¿Te afectaría en algo?
  #3 (permalink)  
Antiguo 11/12/2008, 02:36
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Respuesta: Problema con consulta sql

en el lenguaje de servidor que estes usando haz primero: select count(campo) from tabla

y asi si te dice que hay algun registro pues realizas esa consulta. si no, pues le asignas a la suma un 0.

Si hay 0 registros, te ahorras ejecutar la consulta. Si no haces una consulta doble.

Tambien puedes hacer que al crear la tabla añada un registro y al valor que quieres sumar le pongas 0. Es un registro que no vale para nada, pero por un registro ...

Un saludo
  #4 (permalink)  
Antiguo 11/12/2008, 06:43
 
Fecha de Ingreso: junio-2004
Mensajes: 266
Antigüedad: 19 años, 10 meses
Puntos: 8
Respuesta: Problema con consulta sql

y no seria mejor...

where ... and valores is not null
__________________
WebSenior
  #5 (permalink)  
Antiguo 11/12/2008, 08:45
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Respuesta: Problema con consulta sql

pues tambien, jejeje
  #6 (permalink)  
Antiguo 11/12/2008, 21:43
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 3 meses
Puntos: 7
Respuesta: Problema con consulta sql

Yo pensé en esa condición usando WHERE campo IS NOT NULL, peeeeeeero, no van a haber sumas para ese registro, se va a pasar por alto, y quizá él necesite la suma sin importar que uno sea nulo.

De ser así no sirve.
  #7 (permalink)  
Antiguo 12/12/2008, 04:09
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, 5 meses
Puntos: 2658
Respuesta: Problema con consulta sql

Yo he enfrentado ese problema al realizar reportes que eventualmente pueden devolver nulos en alguna columna, finalmente la solución es realmente simple: Tienes que ubicar el punto de la consulta donde se presente el NULL y simplemente poner
Cita:
IFNULL(campo,0)
Eso hará que el nulo se transforme en cero.
En los casos que yo enfrenté, el problema se da en la construcción de una tabla resultado por medio de subconsultas, por lo cual, como los campos devueltos son en realidad virtuales (no existen en ninguna tabla) al ser creados en la subconsulta, no hay forma de definir un valor por defecto para ellos. La única solución que hallé era esta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 12/12/2008, 07:44
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 3 meses
Puntos: 7
Respuesta: Problema con consulta sql

Buena solución amigo.
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 10:09.