Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/06/2013, 11:35
Gedeon
 
Fecha de Ingreso: agosto-2003
Mensajes: 174
Antigüedad: 20 años, 8 meses
Puntos: 3
Respuesta: clausula HAVING

Para preguntar si un campo está vacio no tienes que preguntar si su valor es "" sino si su valor es null. Mysql tiene una función isnull(campo) que devuelve true si el campo setá vacio y false si no lo está.

También creo que tienes un error conceptual en el having. Es frecuente confundir el where y el having.

la claúsula where establece una condicion para seleccionar los registros con los cuales vas a operar. Aquellos que no cumplan la condición no entran en la orden sql. Una vez haces la orden sql y hayas agrupado es posible que algunos de esos grupos que has obtenido no los quieras. Para eso está la claúsula having. Lo que pongas en having se realiza una vez realizada la operación y no antes.

Por esa razon si tu quieres hacer una operacion y descartar los que tengan provincia null tendrías (etiendo yo) que poner 'where not isnull(provincia). De esa manera los demás serían agrupados por provincia. Si en vez de eso pones el having entonces te hace los grupos incluyendo uno con provincia vacia y luego descartas ese grupo.

Puede parecer lo mismo a primera vista pero no es igual. Ni siquiera parecido.