
28/08/2009, 14:45
|
 | | | Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 15 años, 7 meses Puntos: 4 | |
Respuesta: Consulta de movimientos secuenciales Hice una prueba con esto y aparentemente resulta manteniendo el esquema inicial con un pequeño cambio bajo sugerencia vuestra, los campos fecha y hora los converti en mFecha del tipo DateTime:
Código:
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `movimientos`
--
CREATE TABLE IF NOT EXISTS `movimientos` (
`cArt` int(2) NOT NULL,
`mFecha` datetime NOT NULL,
`mTipo` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Volcar la base de datos para la tabla `movimientos`
--
INSERT INTO `movimientos` (`cArt`, `mFecha`, `mTipo`) VALUES
(1, '2009-08-26 10:05:00', 1),
(2, '2009-08-26 10:30:00', 1),
(1, '2009-08-26 10:35:00', 2),
(3, '2009-08-26 10:45:00', 1),
(2, '2009-08-26 10:50:00', 2),
(3, '2009-08-26 11:15:00', 2),
(1, '2009-08-26 11:25:00', 1),
(1, '2009-08-27 09:05:00', 2),
(2, '2009-08-27 09:10:00', 1),
(2, '2009-08-28 14:57:50', 2);
Y he aqui la dichosa consulta para devolver los datos de la manera solicitada incialmente Cita:
SELECT cArt, DATE(Entrada) As FIngreso,
TIME(Entrada) AS hIngreso,
CASE WHEN Salida IS NULL THEN '____.__.__'
ELSE DATE(Salida)
END As FSalida,
CASE WHEN Salida IS NULL THEN '__:__'
ELSE TIME(Salida)
END AS hSalida
FROM (
SELECT T1.cArt, T1.mFecha As Entrada,
(SELECT Min(mFecha) AS mFecha
FROM movimientos
WHERE cArt = T1.cArt AND mTipo = 'S' AND mFecha > T1.mFecha) AS Salida
FROM movimientos T1
WHERE MTipo = 'E'
) TFinal
ORDER BY cArt, Entrada, Salida Por favor ayudenme a probarla para saber si es definitivo o encuentran alguna inconsistencia |