Ver Mensaje Individual
  #9 (permalink)  
Antiguo 17/06/2013, 14:06
max_mouse699
 
Fecha de Ingreso: abril-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 7
Respuesta: evitar valores null dentro de un calculo en una consulta

@rocha7778: Creo que lo que consultas si se puede realizar, pero creo que lo formulaste de mala manera. Te paso a explicar mas en detalle que es lo que creo que tu quieres lograr.

Como bien dijo gnzsoloyo, una consulta se estructura basicamente en una sola forma: SELECT .... FROM .... [WHERE] ...

Ahora, hay consultas que se realizan sobre otras consultas, consideradas como subconsultas, y de las cuales son tratadas como consultas avanzadas. En este tipo de subconsultas, pueden ir en el lugar que lo desees, siempre y cuando respetes siempre la estructura basica de una consulta SQL. Me explico en mas detalle.

En una consulta, por ejemplo puedes tener:
Código MySQL:
Ver original
  1.  u1.a1,
  2.  (
  3.    SELECT SUM(m1) AS valor_suma
  4.    FROM [nombre_tabla]
  5.    WHERE m5 > 10
  6.  ) as t1,
  7.  u1.a12
  8. (
  9.   SELECT *
  10.   FROM tabla3
  11.   WHERE q4 = 6
  12.   GROUP BY fecha
  13. ) as u1
  14. WHERE u1.valor = 45 AND t1.valor > 8

Si te puedes dar cuenta en esta consulta, nunca deje de respetar la estructura basica de una consulta SQL, ya que si analizas globalmente la consulta, se encuentran todos los componentes que generan una consulta SQL basica que son el SELECT... FROM ... WHERE.... , la gracia este en como utilizas y como estructuras tu consulta.

@gnzsoloyo y @kaki.

Con el permiso de ustedes, me parece que su discusion es correcta, debido a que ambos tienen razon, pero analizando un poco el problema mencionado en un comienzo por usuario rocha7778, pude determinar lo siguiente:
Cita:
... (1/0) realmente son dos consultas una que arroja 1 y otra que por razones de inconsistencia arroja cero....
A lo que menciona el usuario, ese valor propuesto por él es un simple valor de ejemplo, por lo cual si fuera en un sentido literal, gnzsoloyo tiene razon, no se puede realizar una division por cero. Ahora, segun el manual de referencia, esta situacion es una caracteristica de MySQL a la hora de configurar el servidor, en la cual por defecto si realizas esta operacion, el valor del resultado es NULL y no un error, a no ser que tengas activado que te arroje error en caso de dividir por cero. Para mas informacion, poder visitar el siguiente enlace: [URL="http://dev.mysql.com/doc/refman/5.0/es/precision-math-expressions.html"]http://dev.mysql.com/doc/refman/5.0/es/precision-math-expressions.html[/URL]

Por lo tanto, lo que intenta realizar el usuario es completamente factible, si es que lo tiene configurado por defecto.
Y si tomamos el valor como que es una referencia, lo que indica kaki es correcto, pero esto lo tiene que controlar en la consulta en la cual obtiene el valor cero, y colocar un condicional que en caso de ser 0, que lo especifique como NULL, asi el valor resultante en una division de cualquier valor por NULL, su resultado sera NULL.

Saludos a todos.

Última edición por max_mouse699; 17/06/2013 a las 14:10 Razón: perdon, me equivoque en especificar alias a los campos del select