
01/04/2008, 01:30
|
Colaborador | | Fecha de Ingreso: marzo-2008 Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 17 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 |