Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/05/2010, 17:55
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: Ayuda con HAVING y AS

AS es una cláusula obsoleta, que sólo tiene uso como compatibilidad hacia versiones anteriores de los DBMS. Es igual si la usas o no, porque el resultado será el mismo (y tendrás menos código ensuciando todo).
Volviendo al último detalle de lo que dices, la única forma de hacer alguna diferenciación es usando la función IF(), pero en tu caso ya tienes diferenciados en distintas líneas los resultados, ya que estás haciendo un agrupamiento precisamente por ese campo, y la consulta solamente te está devolviendo tres registros...
Así que, ¿qué es exactamente lo que deseas lograr? ¿Diferenciar cómo?

Código MySQL:
Ver original
  1.   dd,estatus_op,
  2.   COUNT(epep) CantEpep
  3. FROM infinitum
  4.   (sem_inireal=CONCAT('10','',WEEK(CURDATE()))
  5.   OR sem_inicio=CONCAT('10','',WEEK(CURDATE()))
  6.   ) AND (estatus_op='EN PROCESO' OR estatus_op='INSTALADO') OR (estatus_op='NO PROGRAMADO')
  7. GROUP BY estatus_op;

No comprendo bien por qué usas el HAVING para un uso que corresponde al WHERE (mas o menos como te lo pongo). Ten en cuenta lo que dice el manual:
Cita:
- No use HAVING para elementos que deban estar en la cláusula WHERE . Por ejemplo, no escriba lo siguiente:
Código MySQL:
Ver original
  1. mysql> SELECT col_name FROM tbl_name HAVING col_name > 0;
Escriba esto en su lugar:
Código MySQL:
Ver original
  1. mysql> SELECT col_name FROM tbl_name WHERE col_name > 0;
- La cláusula HAVING puede referirse a funciones de agregación, algo que no puede hacer la cláusula WHERE:
Código MySQL:
Ver original
  1. mysql> SELECT user, MAX(salary) FROM users
  2. ->     GROUP BY user HAVING MAX(salary)>10;
No te olvides que el que algo funcione, no quiere decir que sea óptimo hacerlo...
Una de las razones de la existencia del HAVING está precisamente en lograr verificar condiciones que surgen de las funciones agregadas, las cuales no pueden ir en el WHERE (el WHERE opera sobre cada registro, las funciones agregadas sobre múltiples, son conceptos incompatibles).
__________________
¿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; 18/05/2010 a las 19:27