Hola etrasvina:
Creo que lo único que tendrías que hacer es obtener un max(factura) y max(fecha), más o menos así:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.11 sec)
Query OK, 3 rows affected (0.03 sec)
+---------+--------+
| cliente | nombre |
+---------+--------+
| 25 | Juan |
| 33 | Luis |
| 68 | Pedro |
+---------+--------+
Query OK, 0 rows affected (0.05 sec)
-> (350, 25, '2011-05-24'),
-> (380, 25, '2011-05-30'),
-> (334, 33, '2011-05-22'),
-> (356, 33, '2011-05-24'),
-> (368, 68, '2011-05-26'),
-> (372, 68, '2011-05-28');
Query OK, 7 rows affected (0.01 sec)
+---------+---------+------------+
| factura | cliente | fecha |
+---------+---------+------------+
| 320 | 25 | 2011-05-20 |
| 350 | 25 | 2011-05-24 |
| 380 | 25 | 2011-05-30 |
| 334 | 33 | 2011-05-22 |
| 356 | 33 | 2011-05-24 |
| 368 | 68 | 2011-05-26 |
| 372 | 68 | 2011-05-28 |
+---------+---------+------------+
mysql> #sin grupar
mysql
> select c.cliente
, c.nombre
, f.factura
, f.fecha
from -> clientes c
inner join facturas f
on c.cliente
= f.cliente
; +---------+--------+---------+------------+
| cliente | nombre | factura | fecha |
+---------+--------+---------+------------+
| 25 | Juan | 320 | 2011-05-20 |
| 25 | Juan | 350 | 2011-05-24 |
| 25 | Juan | 380 | 2011-05-30 |
| 33 | Luis | 334 | 2011-05-22 |
| 33 | Luis | 356 | 2011-05-24 |
| 68 | Pedro | 368 | 2011-05-26 |
| 68 | Pedro | 372 | 2011-05-28 |
+---------+--------+---------+------------+
mysql> #agrupando y obteniendo el MAX(fecha) y MAX(factura)
mysql
> select c.cliente
, c.nombre
, -> max(f.factura
) factura
, -> clientes c
inner join facturas f
on c.cliente
= f.cliente
+---------+--------+---------+------------+
| cliente | nombre | factura | fecha |
+---------+--------+---------+------------+
| 25 | Juan | 380 | 2011-05-30 |
| 33 | Luis | 356 | 2011-05-24 |
| 68 | Pedro | 372 | 2011-05-28 |
+---------+--------+---------+------------+
Haz la prueba y nos comentas.
Saludos
Leo.