Ver Mensaje Individual
  #24 (permalink)  
Antiguo 26/05/2015, 10:41
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Tomar el id mínimo de un campo

Hola planmental:

Tienes algunos detalles en la consulta, por ejemplo, el manejo del (;) punto y coma: si observas casi al final de la consulta tienes dos (;) por lo tanto, lo que sigue después del primero no te lo toma en cuenta:

Código:
 GROUP BY servicio_id, C.cliente_id););
Ahora bien, no había visto tu post, y cuando traté de contestarlos observé que ya lo habían eliminado, (ya gnzsoloyo te había comentado la razón del por qué?

Sin embargo, encontré una solución que creo que te puede servir... también como comenta gnzsoloyo, lo hice en partes, o en capas..

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+---------+------------+
  3. | id   | cliente | fecha      |
  4. +------+---------+------------+
  5. |    7 | v1      | 2015-05-20 |
  6. |    6 | v1      | 2015-05-20 |
  7. |    5 | v1      | 2015-05-01 |
  8. |    4 | v1      | 2015-03-05 |
  9. |    3 | v2      | 2015-02-02 |
  10. |    2 | v3      | 2015-01-30 |
  11. |    1 | v1      | 2015-01-01 |
  12. +------+---------+------------+
  13. 7 rows in set (0.00 sec)
Primero obtuve la fecha del último cliente registrado:

Código MySQL:
Ver original
  1. mysql> SELECT MAX(fecha) ultimo
  2.     -> FROM tabla;
  3. +------------+
  4. | ultimo     |
  5. +------------+
  6. | 2015-05-20 |
  7. +------------+
  8. 1 row in set (0.00 sec)

Después de eso, obtuve la lista del los clientes que se registraron en esa fecha.

Código MySQL:
Ver original
  1. mysql> SELECT DISTINCT cliente
  2.     -> FROM tabla T1
  3.     -> INNER JOIN ( SELECT MAX(fecha) ultimo
  4.     ->              FROM tabla) T2 ON T1.fecha = T2.ultimo;
  5. +---------+
  6. | cliente |
  7. +---------+
  8. | v1      |
  9. +---------+
  10. 1 row in set (0.02 sec)

Ojo, aquí tendrías que decirnos ¿qué pasaría cuando distintos usuarios se registraron el igual el último día? por con los datos de ejemplo el cliente v1 se registro 2 veces con la fecha 2015-05-20, lo que podría suponer que es posible que otro usuario distinto a v1, se pudo registrar también con esa fecha.

Finalmente, utilicé esta consulta para encontrar la minima fecha de ese cliente, sin embargo como también mencionaban, la mínima fecha para v1 es en realidad (2015-05-20), pero existen otros clientes con una fecha posterior, por lo tanto AGREGUÉ UNA CONDICIÓN NOT EXISTS... así:

Código MySQL:
Ver original
  1. mysql> SELECT T.cliente, MIN(T.fecha) minima
  2.     -> FROM tabla T
  3.     -> INNER JOIN
  4.     -> ( SELECT DISTINCT cliente
  5.     ->   FROM tabla T1
  6.     ->   INNER JOIN ( SELECT MAX(fecha) ultimo
  7.     ->                FROM tabla) T2 ON T1.fecha = T2.ultimo ) T3
  8.     ->   ON T.cliente = T3.cliente
  9.     ->  AND NOT EXISTS ( SELECT id
  10.     ->                   FROM tabla T4
  11.     ->                   WHERE T4.cliente != T.cliente AND T4.fecha > T.fecha);
  12. +---------+------------+
  13. | cliente | minima     |
  14. +---------+------------+
  15. | v1      | 2015-03-05 |
  16. +---------+------------+
  17. 1 row in set (0.00 sec)

Que creo que es el dato que estabas buscando.

Haz la prueba y nos comentas.

Saludos
Leo.