Podría ser algo así
Código PHP:
Ver original$max = $this->getAdapter()
->select()
->from(array('msj' => 'mensaje'), new Zend_Db_Expr
('MAX(`msj`.`fecha`) as max_time')) ->group('msj.de');
echo $this->getAdapter()
->select()
->from(array('m' => 'mensaje')) ->join(array('u' => 'usuario'), 'm.de = u.id', array('nombre'=>'nombre', 'apellido'=>'apellido')) ->join(array('tmp' => new Zend_Db_Expr
("($max)")), 'm.fecha = tmp.max_time') ->where('u.rol = ?', 0)
->where('m.para = ?', (int)$id)
->group('m.de')
->order('m.fecha DESC')
->__toString();
Como también puedes indicar directamente la consulta en Zend_Db_Expr.
Código PHP:
Ver originalecho $this->getAdapter()
->select()
->from(array('m' => 'mensaje')) ->join(array('u' => 'usuario'), 'm.de = u.id', array('nombre'=>'nombre', 'apellido'=>'apellido')) ->join(array('tmp' => new Zend_Db_Expr
("(SELECT MAX(`msj`.`fecha`) as max_time FROM `mensaje` AS `msj` GROUP BY `msj`.`de`)")), 'm.fecha = tmp.max_time') ->where('u.rol = ?', 0)
->where('m.para = ?', (int)$id)
->group('m.de')
->order('m.fecha DESC')
->__toString();