Tema: consulta
Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/11/2011, 14:34
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años, 2 meses
Puntos: 447
Respuesta: consulta

Hola de nuevo diegohugogallego:

Código:
SUM(IF(titulo != 'hola', 1, 0)) total_no_hola
Esto es simplemente un contador... internamente lo que hace es asignarle un 1 a aquellos registros que cumplen una condición y un cero a los que no, es decir, observa cómo se comporta la consulta sin el sum:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM fotos;
  2. +---------+--------+
  3. | usuario | titulo |
  4. +---------+--------+
  5. | juan    | uno    |
  6. | juan    | hola   |
  7. | juan    | dos    |
  8. | mateo   | hola   |
  9. | marco   | juan   |
  10. +---------+--------+
  11. 5 rows in set (0.00 sec)
  12.  
  13. mysql> SELECT usuario, titulo,
  14.     -> IF(titulo = 'hola', 1, 0) total_hola,
  15.     -> IF(titulo != 'hola', 1, 0) total_no_hola
  16.     -> FROM fotos
  17.     -> WHERE usuario = 'juan';
  18. +---------+--------+------------+---------------+
  19. | usuario | titulo | total_hola | total_no_hola |
  20. +---------+--------+------------+---------------+
  21. | juan    | uno    |          0 |             1 |
  22. | juan    | hola   |          1 |             0 |
  23. | juan    | dos    |          0 |             1 |
  24. +---------+--------+------------+---------------+
  25. 3 rows in set (0.00 sec)

de tal suerte que si sumas (SUM) el número de 1's de la columna total_hola te da el resultado esperado, lo mismo para la columna de no_hola.

Espero que con esto haya quedado un poco más claro.

Saludos
Leo.