Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/05/2017, 10:17
banderas20
 
Fecha de Ingreso: noviembre-2003
Mensajes: 456
Antigüedad: 20 años, 5 meses
Puntos: 1
Pregunta SQL para hacer cálculos sobre filas de la misma tabla

Hola,

tengo un problema con una base de datos.

Es una tabla (events) donde se almacenan alarmas. El instante en el que se genera la alarma y el instante en el que deja de estar activa.

Quiero que mi consulta saque la alarma, el instante de generación, y la DURACIÓN que dicha alarma está activa. Si "1" es activa y "0" es inactiva, tendré que calcular la diferencia de instantes entre dos filas de la misma tabla. Pero sólo entre el "0" inmediatamente posterior a un "1", porque la alarma puede activarse y desactivarse muchas veces,

En MySQL uso lo siguiente

Código:
select 
		alertas_UP.objectid,
        alertas_UP.clock,
		from_unixtime(alertas_UP.clock) as Fecha_Activacion,
		(alertas_DOWN.clock - alertas_UP.clock) as Duracion_Segs
		from alertas_UP left join 
				(select * from
					events
                    where events.clock >= alertas_UP.clock
                    and and value=0
                    order by alertas_UP.clock desc
                    limit 1
				) alertas_DOWN
		on alertas_UP.objectid = alertas_DOWN.objectid
		where alertas_UP.objectid = alertas_DOWN.objectid
		#and alertas_DOWN.clock >= alertas_UP.clock
        #and alertas_DOWN.eventid > alertas_UP.eventid
		order by alertas_UP.clock desc
La tabla alertas_UP es una que me he creado con las activaciones. alertas_DOWN es un alias.

MySQL me dice que:

Código:
Error Code: 1054. Unknown column 'alertas_UP.clock' in 'where clause'
No tengo ni idea de cuál es el error. Si alguien ve algo raro...

Saludos y gracias!