Ver Mensaje Individual
  #1  
Antiguo 18-04-2013
elarys elarys is offline
Miembro
 
Registrado: abr 2007
Posts: 94
Reputación: 18
elarys Va por buen camino
Update con tres tablas

Hola estoy migrando de mysql a firebird y me trabe en un simple update

Tengo estas 3 tablas las resumo para el caso

Código SQL [-]
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
Código SQL [-]
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 me dice que el INNER JOIN 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

Última edición por elarys fecha: 18-04-2013 a las 04:13:54.
Responder Con Cita