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

¿Por que son diferentes estas conultas de campos null?

Estas en el tema de ¿Por que son diferentes estas conultas de campos null? en el foro de Mysql en Foros del Web. Hola, queria saber si alguien podia decirme cual es la diferencia entre estas dos consultas, les comento el valor de monto es null en todos ...
  #1 (permalink)  
Antiguo 11/08/2009, 08:12
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 2 meses
Puntos: 1
¿Por que son diferentes estas conultas de campos null?

Hola, queria saber si alguien podia decirme cual es la diferencia entre estas dos consultas, les comento el valor de monto es null en todos los registros:

SELECT count(monto) FROM programatmp where monto IS NULL
El resultado es 0

SELECT count(*) FROM programatmp where monto IS NULL
El resultado es 15000 (todos los registros)

gracias
  #2 (permalink)  
Antiguo 11/08/2009, 08:26
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: ¿Por que son diferentes estas conultas de campos null?

En el primer caso estás diciendolé que cuente los valores encontrados en el campo "monto", pero de los registros donde "monto" sea NULL. Como es una sumatoria imposible (NULL no existe como valor, por tanto no se puede sumar), el valor será siempre cero (0).
En el segundo caso lo que pides es que te cuente cuántos registros hay en donde el campo "monto" sea NULL.

Son consultas diferentes. Tu problema es que la primera es irrealizable.

Ten en cuenta siempre que toda operación donde uno de los valores sea NULL da siempre NULL. No importa cuál sea esa operación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 11/08/2009, 08:32
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 1 mes
Puntos: 360
Respuesta: ¿Por que son diferentes estas conultas de campos null?

No es posible contar valores null, por eso el conteo en la primera sentencia te da cero.

si hicieras esto:

SELECT count(ifnull(monto,0)) conteo FROM programatmp where monto IS NULL

Puedes ver que funciona bien.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 11/08/2009, 08:35
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: ¿Por que son diferentes estas conultas de campos null?

Ejemplo perfecto el de huesos52. En ese caso la consulta funciona porque los valores NULL encontrados se convierten en ceros. Como sí se pueden contar ceros (no los estás sumando, los cuentas), entonces laconsulta puede devolverte un resultado.

En cualquier cso, esta y la segunda que propones deberán devolver la misma cifra, porque realizan tareas equivalentes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 11/08/2009, 09:09
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: ¿Por que son diferentes estas conultas de campos null?

Muchas gracias a todos!!
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 18:08.