Foros del Web » Programando para Internet » PHP » Zend »

[SOLUCIONADO] Consulta sentencia sum

Estas en el tema de Consulta sentencia sum en el foro de Zend en Foros del Web. Hola comunidad llevo poco mas de un mes trabajando con zend y necesito saber como hacer esta consulta para un reporte: select c.nombrecarrera, sum(case when ...
  #1 (permalink)  
Antiguo 26/04/2013, 18:20
Avatar de afcf  
Fecha de Ingreso: abril-2013
Ubicación: Bogota
Mensajes: 3
Antigüedad: 11 años, 6 meses
Puntos: 0
Consulta sentencia sum

Hola comunidad llevo poco mas de un mes trabajando con zend y necesito saber como hacer esta consulta para un reporte:

select c.nombrecarrera,
sum(case when b.tiposubsidio = 'total' then 1 else 0 end)total,
sum(case when b.tiposubsidio = 'a' then 1 else 0 end)tipo_A,
sum(case when b.tiposubsidio = 'b' then 1 else 0 end)tipo_B,
sum(case when b.tiposubsidio = 'sin' then 1 else 0 end)sin_subsidio
from carreras as c,beneficiarios as b
where c.idcarrera = b.idcarrera
group by c.idcarrera;

estare muy agradecido por cualquier ayuda que me puedan dar.
  #2 (permalink)  
Antiguo 26/04/2013, 22:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Consulta sentencia sum

Puedes usar sin problema el query directamente, ¿o quieres re-escribirla usando Zend_Db_Query?
  #3 (permalink)  
Antiguo 27/04/2013, 15:06
Avatar de afcf  
Fecha de Ingreso: abril-2013
Ubicación: Bogota
Mensajes: 3
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Consulta sentencia sum

intente hacer algo asi:

public function reporte() {
$sql = 'select c.nombrecarrera,
sum(case when b.tiposubsidio = ' . 'total' . ' then 1 else 0 end)total,
sum(case when b.tiposubsidio = ' . 'a' . ' then 1 else 0 end)tipo_a,
sum(case when b.tiposubsidio = ' . 'b' . ' then 1 else 0 end)tipo_b,
sum(case when b.tiposubsidio = ' . 'sin' . ' then 1 else 0 end)sin_subsidio,';
$sql.='from carreras as c, beneficiarios as b where c.idcarrera = b.idcarrera ';
$sql.='group by c.idcarrera;';
return Zend_Db_Table::getDefaultAdapter()->fetchAll($sql);
}

pero no me sirvio y luego hice esto:

public function reporte2() {
$select = Zend_Db_Table::getDefaultAdapter()->select();
$select->from(array('c' => 'carreras'), array('c.nombrecarrera', 'sum' =>'sum(case when b.tiposubsidio = ' . 'total' . ' then 1 else 0 end)total'))
->join(array('b' => 'beneficiarios'), ' c.idcarrera = b.idcarrera');
//$select->where('b.tiposubsidio = ?', 'total');
$select->group("c.idcarrera");
return Zend_Db_Table::getDefaultAdapter()->fetchAll($select);
}

pero igual aun no doy para sacarla y no se en donde estoy fallando.
  #4 (permalink)  
Antiguo 30/04/2013, 19:24
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 8 meses
Puntos: 137
Respuesta: Consulta sentencia sum

deberia funcionar asi
Código PHP:
Ver original
  1. public function reporte() {
  2.     $sql = 'select c.nombrecarrera,
  3.        sum(case when b.tiposubsidio = ' . 'total' . ' then 1 else 0 end)total,
  4.        sum(case when b.tiposubsidio = ' . 'a' . ' then 1 else 0 end)tipo_a,
  5.        sum(case when b.tiposubsidio = ' . 'b' . ' then 1 else 0 end)tipo_b,
  6.        sum(case when b.tiposubsidio = ' . 'sin' . ' then 1 else 0 end)sin_subsidio,';
  7.     $sql.='from carreras as c, beneficiarios as b where c.idcarrera = b.idcarrera ';
  8.     $sql.='group by c.idcarrera;';
  9.     return Zend_Db_Table::getDefaultAdapter()->query($sql);
  10. }
con consultas muy avanzadas siempre tengo problemas con el query builder :P, prefiero escribirlas directamente y ejecutarlas con query. Si no funciona dinos el error que te sale.
__________________
>> abimaelmartell.com
  #5 (permalink)  
Antiguo 02/05/2013, 17:35
Avatar de afcf  
Fecha de Ingreso: abril-2013
Ubicación: Bogota
Mensajes: 3
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Consulta sentencia sum

gracias por su ayuda, al parecer era un problema con el entre comillado

Etiquetas: sentencia, sum
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 08:22.