Tras busquedas e intentos e dado con la solución, claro esto gracias a las sugerencias de
masterpuppet, eh aquí la solución:
El Query Orginal deseado:
Código:
SELECT
`g`.*, `t`.`total_tarjetas`, `u`.`username` AS `usuario`
FROM
`tarjetas_grupos` AS `g`
LEFT JOIN (
SELECT COUNT(*) AS `total_tarjetas`, `tarjetas_prepago`.`id_grupo`
FROM `tarjetas_prepago`
GROUP BY `id_grupo`
) AS `t` ON t.id_grupo=g.id_grupo
LEFT JOIN `users` AS `u` ON u.id_user = g.creado_por
ORDER BY `g`.`id_grupo` DESC
Y la implementación con Zend_Db:
Código PHP:
$tGrupos = new TarjetasgruposTable();
$tTarjetas = new TarjetasTable();
$tUsers = new UsuariosTable();
$subSelect = $tTarjetas->select()
->from(
$tTarjetas->_tablename,
array(
'total_tarjetas'=>'COUNT(*)',
'id_grupo')
)
->group('id_grupo');
$select = $tGrupos->select()
->setIntegrityCheck(false)
->from(
array('g'=>$tGrupos->_tablename),
array(
'g.*')
)
->joinleft(
array('t'=>$subSelect),
't.id_grupo=g.id_grupo',
array(
'total_tarjetas'=>'t.total_tarjetas'
)
)
->joinleft(
array('u'=>$tUsers->_tablename),
'u.id_user = g.creado_por',
array(
'usuario'=>'u.username'
)
)
->order('g.'.$table->_id.' DESC');
Lo del _tablename es una variable que especifica el nombre de la tabla, la cual se define en el objeto Zend_Db_Table.
Gracias a todos los que contestarón.
Saludos!