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

Varios contadores en un solo select

Estas en el tema de Varios contadores en un solo select en el foro de Mysql en Foros del Web. Buenos días Actualmente hago tres accesos o 3 consultas SELECT a la base de datos con el único fin de obtener 3 totales. Mi pregunta ...
  #1 (permalink)  
Antiguo 01/02/2010, 05:48
Avatar de intergus  
Fecha de Ingreso: mayo-2007
Mensajes: 126
Antigüedad: 12 años, 8 meses
Puntos: 3
Varios contadores en un solo select

Buenos días

Actualmente hago tres accesos o 3 consultas SELECT a la base de datos con el único fin de obtener 3 totales.

Mi pregunta es:

Existe una forma de hacerlo en una sentencia o es mejor hacer una consulta y luego un bucle en php para contar los distintos contadores que necesito?

¿Qué sería más efectivo en cuanto a ahorro de recursos?

por si no me expliqué bien, lo que pretendo es:

contar todos los registros que hay en la base de datos, todos los que el campo A =1 y ademas el campo B<>"" y todos los que el campo A=0 y el campo B<>""

Actualmente hago 3 select distintos con un count(*) y sus respectivos WHERE

Gracias
  #2 (permalink)  
Antiguo 01/02/2010, 07:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 2 meses
Puntos: 2654
Respuesta: Varios contadores en un solo select

Esta es una forma simple, pero efectiva:
Código MySQL:
Ver original
  1.     SUM(IF(A=1,1,0)) valor1,
  2.     SUM(IF(B<>'',1,0)) valor2,
  3.     SUM(IF(A=0 AND B<>'', 1, 0) valor3
  4. FROM tabla;
La otra opción sería combinar las tres consultas en un único JOIN, pero puede traer algunas complicaciones, si además de esos campos contados hay que traer otros. Algo así:
Código MySQL:
Ver original
  1.     COUNT(T1.A) valor1,
  2.     COUNT(T2.B) valor2,
  3.     COUNT(T3.A) valor3
  4. FROM tabla T1 JOIN tabla T2, JOIN tabla T3
  5. WHERE T1.A=1 OR T2.B<>'' OR (T1.A=1 AND T2.B<>'');
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: contadores, select
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 18:33.