Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

un SELECT dos COUNT con WHERE diferentes?

Estas en el tema de un SELECT dos COUNT con WHERE diferentes? en el foro de Mysql en Foros del Web. Hola amigos tengo una tabla, donde tengo los siguintes campos: provincia, estado, nombreapellidos, etc... en el campo estado guardo tres valores: A. S, I necesito ...
  #1 (permalink)  
Antiguo 08/01/2013, 09:32
 
Fecha de Ingreso: septiembre-2012
Ubicación: La Habana
Mensajes: 32
Antigüedad: 11 años, 7 meses
Puntos: 1
Mensaje un SELECT dos COUNT con WHERE diferentes?

Hola amigos tengo una tabla, donde tengo los siguintes campos:
provincia, estado, nombreapellidos, etc...

en el campo estado guardo tres valores: A. S, I

necesito hacer una consulta donde me muestre la cuenta de los valores del campo estado agrupados por provincias, yo gago los selct solos y me funcionan de maravillas como puedo anidarlos para que el resultado sea mas o menos asi...

PROVINCIA | estadoS | estadoA | estadoI
prov1 | 5 | 3 | 0
prov2 | 3 | 1 | 4
prov3 | 8 | 2 | 6

mi select independientes es este:

SELECT provincia, COUNT(estado) as estadoS FROM tb_datos WHERE estado='S' GROUP BY provincia


Gracias por la ayuda....
  #2 (permalink)  
Antiguo 08/01/2013, 11:50
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: un SELECT dos COUNT con WHERE diferentes?

Hola emilkavg:

Lo que estas planteando lo hemos tratado muchas veces en el foro, es conveniente que antes de publicar una nueva pregunta utilices la herramienta de búsqueda del foro para ver si existe algún tema semejante que te pueda servir. Ojo para la próxima. Ahora si, volviendo a tu problema, existen varias formas en las que puedes resolverlo, la más sencilla sería con SUMAS CONDICIONALES, te pongo un ejemplo para que veas como funcionan.

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+-----------+--------+
  3. | id   | provincia | estado |
  4. +------+-----------+--------+
  5. |    1 | prov1     | A      |
  6. |    2 | prov1     | S      |
  7. |    3 | prov1     | I      |
  8. |    4 | prov1     | A      |
  9. |    5 | prov1     | S      |
  10. |    6 | prov2     | S      |
  11. |    7 | prov2     | A      |
  12. |    8 | prov3     | S      |
  13. |    9 | prov3     | S      |
  14. |   10 | prov3     | I      |
  15. +------+-----------+--------+
  16. 10 rows in set (0.00 sec)
  17.  
  18. mysql> SELECT
  19.     -> provincia,
  20.     -> SUM(IF(estado = 'A', 1, 0)) estadoA,
  21.     -> SUM(IF(estado = 'S', 1, 0)) estadoS,
  22.     -> SUM(IF(estado = 'I', 1, 0)) estadoI
  23.     -> FROM tabla
  24.     -> GROUP BY provincia;
  25. +-----------+---------+---------+---------+
  26. | provincia | estadoA | estadoS | estadoI |
  27. +-----------+---------+---------+---------+
  28. | prov1     |       2 |       2 |       1 |
  29. | prov2     |       1 |       1 |       0 |
  30. | prov3     |       0 |       2 |       1 |
  31. +-----------+---------+---------+---------+
  32. 3 rows in set (0.00 sec)

La parte de las sumas condicionales (SUM-IF) hacen las veces de un contador... el clásico total = total + 1 o total++... si se cumple la condición, entonces lo cuenta UNA VEZ, si no se cumple, simplemente lo ignora (suma un cero, o nada).

Dale un vistazo para ver si te sirve y si tienes dudas lo comentas en el foro

Saludos
Leo.

Etiquetas: count, select, tabla, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:40.