Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

primera y ultima fecha

Estas en el tema de primera y ultima fecha en el foro de Mysql en Foros del Web. estimados. estoy haciendo un control de personal donde registro las entradas y salidas. luego me gustaria mostrar un reporte de cuando fue la primera vez ...
  #1 (permalink)  
Antiguo 31/03/2008, 21:42
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Sonrisa primera y ultima fecha

estimados. estoy haciendo un control de personal donde registro las entradas y salidas. luego me gustaria mostrar un reporte de cuando fue la primera vez que entro y cuando la ultima que salio

la tabla entradas_salidas es la siguiente

entrada____salida____id
1-11-08___2-11-08___5
3-11-08___6-11-08___5
7-11-08___9-11-08___5

y el reporte deberia ser algo asi

entrada____salida____id
1-11-08___9-11-08___5

la cantidad de dias la calculo con DATE_DIFF
pero no logro detectar cual es la primera fecha y cual es la ultima

probe con

SELECT personal.id, MIN(entradas_salidas.entrada), MAX(entradas_salidas.salida)
INNER JOIN entradas_salidas.id = personal.id
FROM personal

pero me los devuelve al revez y tampoco puedo calcular la cantidad de dias desde la primera hasta la ultima entrada

alguna sugerencias?
gracias!!!!
__________________
On error no hago nada porque deje de fumar...
  #2 (permalink)  
Antiguo 01/04/2008, 01:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
con GROUP BY

Tienes que agrupar por el criterio que quieras para poder poner el máximo o el mínimo. En el ejemplo te he agrupado por el id de personal. Si tienes las fechas bien en la base, debería funcionar.

SELECT personal.id, MIN(entradas_salidas.entrada) AS maxfechaentrada, MAX(entradas_salidas.salida) AS maxfechasalida, DATEDIFF(MAX(entradas_salidas.salida), MIN(entradas_salidas.entrada)) AS diasdiferencia
FROM personal INNER JOIN entradas_salidas ON entradas_salidas.id = personal.id GROUP BY personal.id ORDER BY diasdiferencia

En cuanto a lo de DATEDIFF, puedes usarlo también con los máximos y mínimos, pero sin olvidarte de agrupar; te he incorporado un ejemplo en la selección, y he ordenado por ese dato. Naturalmente, tras agrupar, si no quieres los datos de todos los operarios puedes elegir al operario que quieras mediante WHERE personal.id = 5, pero debes escribirlo justo delante de GROUP BY.


SELECT personal.id, MIN(entradas_salidas.entrada) AS maxfechaentrada, MAX(entradas_salidas.salida) AS maxfechasalida, DATEDIFF(MAX(entradas_salidas.salida), MIN(entradas_salidas.entrada)) AS diasdiferencia
FROM personal INNER JOIN entradas_salidas ON entradas_salidas.id = personal.id WHERE personal.id = 5 GROUP BY personal.id


Prueba y ya nos dirás
  #3 (permalink)  
Antiguo 01/04/2008, 10:21
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Re: primera y ultima fecha

perfecto!! funciono!!

ahora una pregunta de optimizacion
veo que dos veces empleas MIN(entradas_saludas.entrada)
lo usas nuevamente en el DATEDIFF
no se podria como definir una variable para no volver a calcular otra vez en toda la base cual es el minimo?
__________________
On error no hago nada porque deje de fumar...
  #4 (permalink)  
Antiguo 01/04/2008, 11:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Re: primera y ultima fecha

No te lo recomiendo, pues se trata de un dato fecha y tendrías que trabajar con funciones PHP para obtener el mismo resultado; yo pienso que si puedes obtenerlo con MySQL, lo hagas...
Pero no soy técnico.
  #5 (permalink)  
Antiguo 01/04/2008, 13:11
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Re: primera y ultima fecha

y en una variable de mysql?
__________________
On error no hago nada porque deje de fumar...
  #6 (permalink)  
Antiguo 01/04/2008, 13:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Re: primera y ultima fecha

Las variables son operativas en los store procedures. Fuera de ellos, se puede parametrizar las consultas, pero no es tan simple y requiere habilidad programando métodos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:28.