Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/04/2013, 16:28
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Contar en una misma tabla los campos que no esten vacios

Hola riscking:

Vayamos por partes, cuando te refieres a VACIO y LLENO, ¿te refieres a esas palabras simplemente a que puedan tener o no algo?, te recuerdo que en BD el concepto de VACIO, está representado por el NULL, que no la palabra 'NULL', son cosas muy distintas. para el ejemplo voy a suponer que tus campos "VACIOS" en realidad tienen un NULL asignado, podrías hacer lo siguiente:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+------------+-------------+----------+-------+-------+-------+
  3. | id   | categoria  | descripcion | aprobado | des2  | des3  | des4  |
  4. +------+------------+-------------+----------+-------+-------+-------+
  5. |    1 | aventuras  | julio verne | NO       | lleno | lleno | NULL  |
  6. |    2 | literatura | otro        | NO       | lleno | NULL  | NULL  |
  7. |    3 | ciencia    | matematicas | SI       | lleno | NULL  | NULL  |
  8. |    4 | humor      | quino       | NO       | lleno | NULL  | lleno |
  9. +------+------------+-------------+----------+-------+-------+-------+
  10. 4 rows in set (0.00 sec)
  11.  
  12. mysql> SELECT SUM( IF(aprobado = 'NO' AND des2 IS NOT NULL, 1, 0) +
  13.     ->             IF(aprobado = 'NO' AND des3 IS NOT NULL, 1, 0) +
  14.     ->             IF(aprobado = 'NO' AND des4 IS NOT NULL, 1, 0)) total
  15.     -> FROM tabla;
  16. +-------+
  17. | total |
  18. +-------+
  19. |     5 |
  20. +-------+
  21. 1 row in set (0.00 sec)

Observa que estoy realizando una suma condicional, un especie de

Código:
contador = contador + 1
Cada vez que se analiza un campo se verifica si el campo aprobado (Si, con B y no con V) es igual a 'NO' y si el campo tiene algún contenido (IS NOT NULL) si es así se suma 1 al contador, y en caso se le suma un cero (en otras palabaras no se le suma nada). Observa que en la tabla hay 6 campos llenos, pero uno de ellos tiene aprobado = 'SI', por lo tanto este campo no se contabiliza.

hay muchas otras formas para llegar al mismo resultado. Dale un vistazo para ver si te sirve.

Saludos
Leo.