Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/04/2008, 01:30
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
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