Ver Mensaje Individual
  #29 (permalink)  
Antiguo 28/08/2009, 14:45
Avatar de nonpublic
nonpublic
 
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 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