Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/06/2016, 12:24
MatiasFiermarin
 
Fecha de Ingreso: septiembre-2011
Mensajes: 35
Antigüedad: 12 años, 7 meses
Puntos: 0
Exclamación Vista en MySQL

Buenos días, tengo un problema que es de bastante urgencia y no tengo ni idea de como lo puedo solucionar.

Tengo una tabla que contiene registros con los siguientes datos.

cedula, hora, entrada, fecha (entre otros pero estos son los importantes), les dejo aqui también el formato como esta guardado.

hora (yyyy-mm-dd hh-mm-ss)
entrada (I/O) Int Out
fecha (yyyy-mm-dd)

De esta tabla tengo 2 vistas creadas, una para las entradas (I) y otra para las salidas (O).
Y de estas 2 vistas anteriormente creadas tengo otra que seria lo siguiente:

Código MySQL:
Ver original
  1.     DEFINER = `root`@`localhost`
  2. VIEW `v_todo` AS
  3.     SELECT
  4.         `v_ntrada`.`Cedula` AS `cedula`,
  5.         `v_ntrada`.`Nombre` AS `nombre`,
  6.         `v_ntrada`.`Fecha` AS `fecha`,
  7.         `v_ntrada`.`hora` AS `entrada`,
  8.         `v_salida`.`hora` AS `salida`,
  9.                     `v_ntrada`.`hora`,
  10.                     `v_salida`.`hora`)) AS `TotalHoras`
  11.     FROM
  12.         (`v_ntrada`
  13.         JOIN `v_salida` ON (((`v_ntrada`.`Fecha` = `v_salida`.`Fecha`)
  14.             AND (`v_ntrada`.`Cedula` = `v_salida`.`Cedula`)
  15.             AND (`v_ntrada`.`hora` < `v_salida`.`hora`))))
  16.     WHERE
  17.         ((`v_ntrada`.`Registrado` = 'NO')
  18.             AND (`v_salida`.`Registrado` = 'NO'))
  19.     GROUP BY `v_ntrada`.`hora` , `v_ntrada`.`Cedula`
  20.     ORDER BY `v_salida`.`Nombre`

Como ven aquí saco las duplas de cada día pero el problema lo tengo cuando una persona entra a las 18:00:00 y sale a las 00:00:00 por lo tanto la parde te (`v_ntrada`.`Fecha` = `v_salida`.`Fecha`) no me funciona (lo mismo pasa cuando entran a las 00:00:00 (siempre entran unos minutos antes) y salen a las 06:00:00).
Al no tener los pares (Entrada y Salida) no puedo calcular las horas que trabajaron y esto me complica mucho.
Si alguien tiene una idea de como hacerlo se lo agradezco

Saludos

Última edición por gnzsoloyo; 01/06/2016 a las 12:59