Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/01/2014, 11:24
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: diferencia de tiempo entre una fila y la anterior

Hola Saba01:

al igual que Djoaq, tengo algunos problemas para entender qué es lo que estás tratando de obtener... creo que deberías de haber comenzado por decirnos qué es lo que esperas como resultado, de esta manera podríamos proponerte una solución distinta a lo que tienes...

Según lo que creo, lo que pretendes hacer es comparar cada registro con su registro anterior (es decir, el 2 contra el 1, el 3 contra el 2, el 4 contra el 3 y así sucesivamente)... en el caso del id = 1, este no lo podrías comparar contra ninguno, pues es el primero de la lista. Si estoy en lo correcto, esto lo puedes hacer de muchas maneras, una de las más simples sería con un LEFT JOIN, es decir, algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM bancal1;
  2. +------+---------------------+-------------+
  3. | id   | fecha               | temperatura |
  4. +------+---------------------+-------------+
  5. |    1 | 2014-01-17 12:08:21 |      22.400 |
  6. |    2 | 2014-01-17 16:39:32 |      15.100 |
  7. |    3 | 2014-01-17 16:42:34 |      15.300 |
  8. |    4 | 2014-01-17 16:45:36 |      15.000 |
  9. |    5 | 2014-01-17 16:51:39 |      14.600 |
  10. |    6 | 2014-01-17 16:54:41 |      14.200 |
  11. +------+---------------------+-------------+
  12. 6 rows in set (0.00 sec)
  13.  
  14. mysql> SELECT * FROM bancal1 T1
  15.     -> LEFT JOIN bancal1 T2 ON T1.id - 1 = T2.id
  16.     -> ORDER BY T1.id;
  17. +------+---------------------+-------------+------+---------------------+-------------+
  18. | id   | fecha               | temperatura | id   | fecha               | temperatura |
  19. +------+---------------------+-------------+------+---------------------+-------------+
  20. |    1 | 2014-01-17 12:08:21 |      22.400 | NULL | NULL                |        NULL |
  21. |    2 | 2014-01-17 16:39:32 |      15.100 |    1 | 2014-01-17 12:08:21 |      22.400 |
  22. |    3 | 2014-01-17 16:42:34 |      15.300 |    2 | 2014-01-17 16:39:32 |      15.100 |
  23. |    4 | 2014-01-17 16:45:36 |      15.000 |    3 | 2014-01-17 16:42:34 |      15.300 |
  24. |    5 | 2014-01-17 16:51:39 |      14.600 |    4 | 2014-01-17 16:45:36 |      15.000 |
  25. |    6 | 2014-01-17 16:54:41 |      14.200 |    5 | 2014-01-17 16:51:39 |      14.600 |
  26. +------+---------------------+-------------+------+---------------------+-------------+
  27. 6 rows in set (0.00 sec)

Una vez con esto tú puedes hacer los cálculos que deseas (según lo que pones en tu consulta, creo que lo que quieres obtener es el tiempo transcurrido desde la última medición), si esto es correcto entonces simplemente harías lo siguiente:

Código MySQL:
Ver original
  1. mysql> SELECT T1.*, TIMEDIFF(T1.fecha, t2.fecha) diferencia
  2.     -> FROM bancal1 T1
  3.     -> LEFT JOIN bancal1 T2 ON T1.id - 1 = T2.id
  4.     -> ORDER BY T1.id;
  5. +------+---------------------+-------------+------------+
  6. | id   | fecha               | temperatura | diferencia |
  7. +------+---------------------+-------------+------------+
  8. |    1 | 2014-01-17 12:08:21 |      22.400 | NULL       |
  9. |    2 | 2014-01-17 16:39:32 |      15.100 | 04:31:11   |
  10. |    3 | 2014-01-17 16:42:34 |      15.300 | 00:03:02   |
  11. |    4 | 2014-01-17 16:45:36 |      15.000 | 00:03:02   |
  12. |    5 | 2014-01-17 16:51:39 |      14.600 | 00:06:03   |
  13. |    6 | 2014-01-17 16:54:41 |      14.200 | 00:03:02   |
  14. +------+---------------------+-------------+------------+
  15. 6 rows in set (0.00 sec)

Dale un vistazo para ver si es lo que necesitas.

Saludos
Leo