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

SQL para hacer cálculos sobre filas de la misma tabla

Estas en el tema de SQL para hacer cálculos sobre filas de la misma tabla en el foro de Mysql en Foros del Web. Hola, tengo un problema con una base de datos. Es una tabla ( events ) donde se almacenan alarmas. El instante en el que se ...
  #1 (permalink)  
Antiguo 13/05/2017, 11:17
 
Fecha de Ingreso: noviembre-2003
Mensajes: 456
Antigüedad: 16 años
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!
  #2 (permalink)  
Antiguo 16/05/2017, 15:00
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 12 años, 10 meses
Puntos: 447
Respuesta: SQL para hacer cálculos sobre filas de la misma tabla

Hola banderas20:

Resulta algo complicado saber exactamente donde está le problema sin saber la estructura de tus tablas y sin tener datos de ejemplos, pero por lo que alcanzo a percibir, tienes dos errores de sintaxis en la subconsulta del LEFT JOIN:

Por un lado, tienes dos AND pegados en el WHERE de la subconsulta:

Código:
...
 events.clock >= alertas_UP.clock
    and and value=0
...
y por otro lado, dentro del la subconsulta estás haciendo referencia de la tabla alertas_UP que está en el FROM externo, pero esto no puedes hacerlo, al menos no de la manera en que lo pones...

Código:
...
from alertas_UP left join 
( select * 
  from
    events
  where 
    events.clock >= alertas_UP.clock
    and value=0
    order by alertas_UP.clock desc
    limit 1
) alertas_DOWN				
...
Te sugiero que nos digas cuál es la estructura de tus tablas y nos pongas algunos datos de ejemplo de cada una de ellas, a partir de estos datos dinos qué es lo que esperas obtener como salida y así podremos indicarte alguna otra alternativa.

Saludos
Leo.

Etiquetas: fecha, filas, select, sql, tabla
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 03:01.