Hola de nuevo:
Si entendí correctamente y partiendo de los datos que estás poniendo de ejemplo hay un error en la salida que estás esperando, dices que esperas estos resultados.
Código:
CLIENTE|ATIENDE|FECHA_LLAM |FECHA_SERV |SERVICIO
123 |JUAN |2011-11-03 08:40|2011-12-07 |FRENOS
1058 |RINGO |2011-11-12 09:00|2011-11-06 |FRENOS
Sin embargo, si revisas tus tablas, la fecha
2011-11-06 aparece para los servicios 4 y 5
SERVICIO
id | fecha |cliente
4 |2011-11-06|128
5 |2011-11-06|1058
Pero en la tabla CONT_SERVICIOS no se indica que alguno de estos servicios sea ACEITE:
Código:
CONT_SERVICIO
id |servicio| id_serv|
6 |VALVULA |4
7 |FRENOS |5
Este pequeño error me trajo de cabeza un buen rato, porque creí que la consulta que estaba haciendo estaba mal... supongo que te confundiste con este registro:
Código:
CONT_SERVICIOS
4 |ACEITE |3
Si estoy en lo correcto, el resultado que debería arrojar la consulta es
Código:
+---------+---------+---------------------+------------+----------+
| cliente | atiende | fecha_llama | fecha_serv | servicio |
+---------+---------+---------------------+------------+----------+
| 123 | JUAN | 2011-11-03 08:40:00 | 2011-02-06 | ACEITE |
| 1058 | RINGO | 2011-11-12 09:00:00 | 2011-08-19 | ACEITE |
+---------+---------+---------------------+------------+----------+
En fin, si estoy equivocado me lo comentas...
Sigo pensando que tienes un mal modelo de datos, pero en vista que dices que es correcto, pues al cliente lo que pida... una forma de obtener el resultado esperado sería así:
Código MySQL:
Ver originalmysql
> SELECT l.cliente
, l.atiende
, T2.max_fecha fecha_llama
, -> T1.max_fecha fecha_serv, T1.servicio
-> (
-> SELECT MAX(fecha
) max_fecha
, cliente
, cs.servicio
-> WHERE cs.servicio
= 'ACEITE' -> ) T1
ON l.cliente
= T1.cliente
-> (
-> ) T2
ON T2.max_fecha
= L.fecha
AND T2.cliente
= l.cliente
; +---------+---------+---------------------+------------+----------+
| cliente | atiende | fecha_llama | fecha_serv | servicio |
+---------+---------+---------------------+------------+----------+
| 123 | JUAN | 2011-11-03 08:40:00 | 2011-02-06 | ACEITE |
| 1058 | RINGO | 2011-11-12 09:00:00 | 2011-08-19 | ACEITE |
+---------+---------+---------------------+------------+----------+
Puedes ejecutar cada subconsulta por separado para que entiendas la lógica que seguí para filtrar la información. cualquier duda o comentario lo comentas en el foro... igual y por el puente no tengo chance de contestarte hasta el próximo martes, pero espero que te sea de utilidad.
Saludos
Leo.