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

Consulta con varios count

Estas en el tema de Consulta con varios count en el foro de Mysql en Foros del Web. Hola buenas tardes no logro saber como realizar una consulta con varios count pero cada uno de esos count tiene una condicional diferente: Tabla: Código: ...
  #1 (permalink)  
Antiguo 10/03/2012, 11:22
 
Fecha de Ingreso: mayo-2009
Mensajes: 242
Antigüedad: 15 años, 6 meses
Puntos: 2
Pregunta Consulta con varios count

Hola buenas tardes no logro saber como realizar una consulta con varios count pero cada uno de esos count tiene una condicional diferente:

Tabla:
Código:
idEncuesta   idEgresado        fecha          p1   p2   p3   p4   p5   p6
        1                  1           2012-09-02      1     2     4     2     1     3
        2                  2           2012-08-21      2     4     2     3     1     3
        3                  3           2012-07-12      2     3     1     4     2     2
        4                  4           2012-07-12      1     3     2     1     1     3
        5                  5           2012-07-13      2     4     2     3     1     3
Entonces yo estoy realizando consultas separadas como por ejemplo:
Código PHP:
$femenino $this->consulta("SELECT COUNT(p1) as femenino FROM encuesta WHERE fecha BETWEEN '".$fechaInicio."' AND '".$fechaFin."' AND p1 = '1'");
$resultFemenino $this->fetch_array($femenino);
  foreach(
$resultFemenino as $rowFemenino):
     
$femenino $rowFemenino['femenino'];
     
$porcentajeFemenino $femenino $porcentajeEncuestados $encuestados;
  endforeach;

$masculino $this->consulta("SELECT COUNT(p1) as masculino FROM encuesta WHERE fecha BETWEEN '".$fechaInicio."' AND '".$fechaFin."' AND p1 = '2'");
$resultMasculino $this->fetch_array($masculino);
  foreach(
$resultMasculino as $rowMasculino):
     
$masculino $rowMasculino['masculino'];
     
$porcentajeMasculino $masculino $porcentajeEncuestados $encuestados
  endforeach; 
Y lo que quiciera saber es como puedo hacer esas dos consultas en una sola, porque si las hago separadas, me saldrian muchisimas consultas, hay preguntas que tienen hasta 6 respuestas cada una. Espero me halla explicado bien, gracias y saludos.

Última edición por kriss8725; 10/03/2012 a las 11:30
  #2 (permalink)  
Antiguo 10/03/2012, 12:37
 
Fecha de Ingreso: mayo-2009
Mensajes: 242
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Consulta con varios count

Resuelto aqui dejo la forma en que me funciono a mi, vez de count utilice sum y una condicion if :

Código PHP:
$p1 $this->consulta("SELECT SUM(IF(p1='1',1,0)) as femenino,SUM(IF(p1='2',1,0)) as masculino FROM encuesta WHERE fecha BETWEEN '".$fechaInicio."' AND '".$fechaFin."'");
       
$resultP1 $this->fetch_array($p1);
       foreach(
$resultP1 as $rowP1):
        
$femenino $rowP1['femenino'];
        
$porcentajeFemenino $femenino $porcentajeEncuestados $encuestados;
        
$masculino $rowP1['masculino'];
        
$porcentajeMasculino $masculino $porcentajeEncuestados $encuestados;
       endforeach; 
  #3 (permalink)  
Antiguo 10/03/2012, 16:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta con varios count

Me alegro que hayas encontrado la forma. Es una bastante recomendada cuando se trata de cálculos así.

PD: La próxima vez procura extirpar todo el código de programación. Aquí el tema es SQL, y no se permite poner códigos no SQL, por varias razones:
- Ensucia el código SQL con otro poco comprensible para los que no programan en ese lenguaje.
- Esconde problemas causados por los valores cargados en las variables, que no pueden verse en ese script.
- No permite ver claramente la sintaxis del SQL, ocultando errores.
- Cuando tiene construcción dinámica de sentencias, no es fácil de entender cómo queda al final, por lo que no se puede saber a priori dónde se origina el error.

ASí que, trata de evitarlo. Nos ayuda a ayudarte.


__________________
¿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: count, select, tabla
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 13:59.