Ver Mensaje Individual
  #5 (permalink)  
Antiguo 18/05/2012, 08:52
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Problema con una consulta en mysql

Quedé en las mismas necesito una explicación con peras y manzanas

Comencemos otra vez desde el principio: ¿Qué registros son los que se tienen que mostrar como resultado? Es decir, tienes 8 registros de ejemplo... ¿cuántos y cuáles son los que necesitas obtener como salida?

De primera vista dices que necesitas la información del último día que trabajo correcto??? entonces descartamos los registros para la fecha 2010-08-30

Ahora, a partir de los 4 registros que existen para la fecha 2010-09-30 ¿cuáles son los que te interesan?

En cuanto a la consulta que tienes, al utilizar la función MAX en tu consulta, es obvio que te regrese 2010-09-30 16:37:19 ya que esta es mayor que
2010-09-30 09:01:09

Tratando de jugar al adivino (porque realmente estoy dando palos de ciego con tu explicación) veamos este script:


Código MySQL:
Ver original
  1. mysql> select * from tabla;
  2. +------+------------+---------------------+--------+
  3. | id   | id_usuario | fecha               | estado |
  4. +------+------------+---------------------+--------+
  5. |    1 |          2 | 2010-08-30 09:00:39 |      0 |
  6. |    9 |          2 | 2010-08-30 14:03:31 |      1 |
  7. |   11 |          2 | 2010-08-30 16:30:29 |      0 |
  8. |   44 |          2 | 2010-08-30 19:30:49 |      1 |
  9. |   16 |          2 | 2010-09-30 09:01:09 |      0 |
  10. |   92 |          2 | 2010-09-30 14:02:51 |      1 |
  11. |   49 |          2 | 2010-09-30 16:37:19 |      0 |
  12. |   33 |          2 | 2010-09-30 19:24:29 |      1 |
  13. +------+------------+---------------------+--------+
  14. 8 rows in set (0.02 sec)
  15.  
  16. mysql> select min(T1.fecha) from tabla T1 inner join
  17.     -> (
  18.     -> select date(max(fecha)) fecha from tabla
  19.     -> where id_usuario = 2) T2 on date(T1.fecha) = T2.fecha
  20.     -> where
  21.     -> time(T1.fecha) > '09:00:00' and estado = 0;
  22. +---------------------+
  23. | min(T1.fecha)       |
  24. +---------------------+
  25. | 2010-09-30 09:01:09 |
  26. +---------------------+
  27. 1 row in set (0.01 sec)

El inner join sirve para filtrar sólo los registros para la última fecha de trabajo. la parte del min es para obtener la PRIMER fecha de ENTRADA del día 2010-09-30 para el usuario 2 ocurrida después de las 09:00:00.

Repito, si continuas con problemas trata de explicarte un poquito mejor jejeje... básicamente copiaste y pegaste lo mismo que pusiste en tu primer post, trata de explicarlo de una manera diferente.

Saludos
Leo.