Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Cálculo a partir de fila actual y siguiente

Estas en el tema de Cálculo a partir de fila actual y siguiente en el foro de Mysql en Foros del Web. Hola, tengo que realizar una consulta a partir de una tabla que registra eventos, hay una columna de tipo Datetime que registra el momento del ...
  #1 (permalink)  
Antiguo 14/07/2012, 17:22
 
Fecha de Ingreso: junio-2012
Mensajes: 16
Antigüedad: 12 años, 5 meses
Puntos: 0
Cálculo a partir de fila actual y siguiente

Hola, tengo que realizar una consulta a partir de una tabla que registra eventos, hay una columna de tipo Datetime que registra el momento del mismo, pero no la duración, la cual se obtiene a partir de la fecha y hora del próximo registro.
¿cómo puedo hacer para crear una columna que sea la fecha y hora de la próxima fila menos la fecha y hora del registro actual?

Muchas gracias!
  #2 (permalink)  
Antiguo 16/07/2012, 08:31
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Cálculo a partir de fila actual y siguiente

Hola mastermdq:

Hay varias formas de resolver esta consulta, una de ellas sería con una subconsulta, comparando cada registro y obteniendo en una subconsulta LA MINIMA FECHA de los registros restantes, donde la fecha SEA MAYOR a la fecha que estás analizando. Supongamos que tienes los siguientes datos:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM fechas;
  2. +------+---------------------+
  3. | id   | fecha               |
  4. +------+---------------------+
  5. |    1 | 2012-07-16 09:16:00 |
  6. |    2 | 2012-07-16 13:22:00 |
  7. |    3 | 2012-07-16 17:51:00 |
  8. |    4 | 2012-07-17 01:38:00 |
  9. |    5 | 2012-07-17 03:45:00 |
  10. +------+---------------------+
  11. 5 rows in set (0.00 sec)

Tendrías que hacer algo como esto:

Código:
SELECCIONAR 
   los campos de la tabla fechas, 
   (
       SELECCIONAR la MINIMA fecha 
       DE la tabla fechas 
       DONDE la fecha sea mayor a la fecha de la tabla externa
   ) con alias SIGUIENTE
DE la tabla fechas;
Si "traduces" esta consulta a SQL obtendrás el siguiente resultado:

Código MySQL:
Ver original
  1. +------+---------------------+---------------------+
  2. | id   | fecha               | siguiente           |
  3. +------+---------------------+---------------------+
  4. |    1 | 2012-07-16 09:16:00 | 2012-07-16 13:22:00 |
  5. |    2 | 2012-07-16 13:22:00 | 2012-07-16 17:51:00 |
  6. |    3 | 2012-07-16 17:51:00 | 2012-07-17 01:38:00 |
  7. |    4 | 2012-07-17 01:38:00 | 2012-07-17 03:45:00 |
  8. |    5 | 2012-07-17 03:45:00 | NULL                |
  9. +------+---------------------+---------------------+
  10. 5 rows in set (0.01 sec)

La parte en rojo, es una subconsulta que pondrás en la parte del SELECT.
Observa que el último registro tiene un NULL, pues no hay ningún registro posterior a la fecha actual. a partir de estas dos fechas puedes obtener la duración, con una función DATEDIFF

Haz la prueba y si tienes problemas nos comentas.

Saludos
Leo.

Etiquetas: actual, fila, siguiente, tabla, tipo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:20.