Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/05/2014, 10:17
Avatar de gnzsoloyo
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: Como Optimizar validacion

En los foros de Bases de DAtos las soluciones son en SQL. Si quieres soluciones para PHP u otro lenguaje, muevo tu post al foro correspondiente.

Cita:
Uso IFNULL para que en caso de que la consulta tenga informacion me traiga el numero de registros encontrados y en caso de que no me devuelva 0 , de esa forma puedo hacer la siguiente validacion e informar si hace falta algo antes de continuar. El IFNULL junto al COUNT me ha ayudado a disminuir tiempos pero no es suficiente.
Lo que te quiere decir @jurena es que si no devuelve registros, tampoco devolverá un NULL en ninguna parte, sino sólo una tabla vacía, con los nombres de la columnas, pero sin registros. En ese caso el IFNULL() no opera, ya que requiere que exista al menos un registro.
El COUNT(), por su lado, por definición no puede devolver NULL. Solo devuelve cero o un valor mayor a cero. El NULL se toma como cero en el COUNT(), pero para funcionar se requiere que la query devuelva al menos UN registro, y el INNER JOIN sólo devuelve registro si hay al menos UN registro que cumpla las condiciones del mismo.
El único caso donde que el COUNT() puede devolver algo en una consulta que devuelva un resultado vacío, es si es el único dato que pueda devolver:
Código SQL:
Ver original
  1. SELECT COUNT(*) total
  2. FROM tablaA T1 INNER JOIN tablaB T2 ON T1.idTablaA = T2.idTablaA
El IFNULL() sólo es realmente funcional si: 1) Usas LEFT JOIN, 2) Lo aplicas sobre un campo donde en un registro dado hay un NULL en la tabla, en un registro existente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 04/05/2014 a las 10:25