MySQL - Control de Acceso

   
Vista:

Control de Acceso

Publicado por Luis Romero (1 intervención) el 24/03/2017 18:18:49
Buenas, el motivo por el cual me refiero a ustedes es porque realizo una consulta a mysql donde obtengo valores de personas que realizan marcajes a diario(es un sistema de control de acceso), el hecho esta en que obtengo todas las entradas y todas las salidas de todas las personas y solo quisiera sacar el primer registro y el ultimo registro por dia de una persona, que solo me consulte primera entrada ultima salida de todas las personas ?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Control de Acceso

Publicado por leonardo_josue (388 intervenciones) el 27/03/2017 20:05:47
Hola Luis Romero:

Si te refieres a campos tipo fecha, (datetime o date) lo que haces simplemente es obtener la entrada mínima y máxima. Supongamos que tienes la siguiente información:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysql> SELECT * FROM tabla;
+--------+---------------------+
| nombre | fecha_registro      |
+--------+---------------------+
| hugo   | 2017-03-26 07:55:00 |
| hugo   | 2017-03-26 16:07:00 |
| hugo   | 2017-03-27 07:59:00 |
| hugo   | 2017-03-27 08:24:00 |
| hugo   | 2017-03-27 13:43:00 |
| hugo   | 2017-03-27 16:04:00 |
| paco   | 2017-03-27 07:55:00 |
| paco   | 2017-03-27 13:01:00 |
| paco   | 2017-03-27 16:05:00 |
| luis   | 2017-03-27 08:10:00 |
+--------+---------------------+
10 rows in set (0.00 sec)

donde un empleado (hugo) tienes varias entradas y salidas para distintos dias, si quieres obtener el primer y el último registro para una fecha en específico, haces algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
mysql> select nombre, MIN(fecha_registro) entrada, MAX(fecha_registro) salida
    -> FROM tabla
    -> WHERE DATE(fecha_registro) = '2017-03-27'
    -> GROUP BY nombre;
+--------+---------------------+---------------------+
| nombre | entrada             | salida              |
+--------+---------------------+---------------------+
| hugo   | 2017-03-27 07:59:00 | 2017-03-27 16:04:00 |
| paco   | 2017-03-27 07:55:00 | 2017-03-27 16:05:00 |
| luis   | 2017-03-27 08:10:00 | 2017-03-27 08:10:00 |
+--------+---------------------+---------------------+
3 rows in set (0.07 sec)

Un caso especial es LUIS, ya que sólo tiene un registro de entrada, por lo tanto la consulta te arroja esta misma tanto como entrada como salida. Coméntanos si te sirve, y si continuas con problemas postea la estructura de tus tablas, pon algunos datos de ejemplos y a partir de esos datos dinos qué es lo que esperas obtener como resultado.


Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad