Tengo estas 3 tablas las resumo para el caso
CREATE TABLE CATEGORIA
(
IDGRUPO Smallint NOT NULL,
GRUPOS Varchar(10),
RESTAR Time,
PRIMARY KEY (IDGRUPO)
);
CREATE TABLE REGISTRO
(
CODIGO Smallint NOT NULL,
NOMBRE Varchar(20),
GRUPO Smallint,
TIEMPO Time,
PRIMARY KEY (CODIGO)
);
CREATE TABLE TIEMPOS
(
IDTIME Smallint NOT NULL,
TIEMPO Time,
CODIGO Smallint,
PRIMARY KEY (IDTIME)
);
Esta es mi consulta en MySql 5.5 que funciona correctamente
UPDATE REGISTRO R
INNER JOIN CATEGORIA C ON (R.GRUPO = C.IDGRUPO)
INNER JOIN TIEMPOS T ON (R.CODIGO = T.CODIGO)
SET R.TIEMPO = (T.TIEMPO - C.RESTAR)
WHERE R.CODIGO > 0
Pero en Firebird no le gusta el INNER JOIN y da el siguiente error
Error: *** IBPP::SQLException ***
Context: Statement::Prepare( UPDATE REGISTRO R
INNER JOIN CATEGORIA C ON (R.GRUPOS = C.GRUPOS)
INNER JOIN TIEMPOS T ON (R.NUMERO = T.NUMERO)
SET R.TIEMPO = (T.TIEMPO - C.RESTAR)
WHERE R.NUMERO > 0 )
Message: isc_dsql_prepare failed
SQL Message : -104
Invalid token
Engine Code : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -104
Token unknown - line 2, column 1
INNER
Me dijeron por ahi que use subconsultas, alguna idea
Ademas necesito que esa resta sea Formateada en (HH:MM:SS.ZZZ)
Hora, minutos, segundos y centesimas, osea pasarlo a campo de tipo Time