Ver Mensaje Individual
  #13  
Antiguo 17-07-2013
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Reputación: 22
fjcg02 Va camino a la fama
Hola jafera,

yo lo haría de un sólo paso...

1.- Ya has cargado la tabla temporal de los datos nacionales...

Ahora, inserta los de la tabla autonómica que no estén en la nacional:
Código SQL [-]
insert into "CTR0003" 
   ( "ID_CORREDOR" ,  "DORSAL" ,  "DORSAL2" , "COGNOM1" ,  "COGNOM2" ,  "NOM" ,  "CODI_CAT" ,   "NACIO" ,   "LLICENCIA" ,   "DNI" ,,   "CODIUCI" ,   "CODI_CLUB" ,   "CLUB" ,   "ABR_CLUB" ,   "PUBLICITAT",   "SEXE" ,  "FEDERAT" ,   "DATA_NAIX" ,   "EDAT" ,   "CATEGORIA" )
SELECT C1, C2, C3... FROM "CTR0003C" AUTONOMICA
LEFT JOIN "CTR0003" DEFINITIVA ON ( AUTONOMICA.DNI= DEFINITIVA.DNI )
WHERE DEFINITIVA.DNI IS NULL

Observa la segunda parte "SELECT ... LEFT JOIN ...
Si ejecutas esto en el ibexpert por ejemplo, incluyes el DNI de la tabla definitiva en la select ( DEFINITIVA.DNI) y quitas la where, te saldrán todos los registros de la tabla autonomica, y el DNI de los que que encuentre en la tabla nacional. Aquellos cuyo DNI de la tabla definitiva están vacíos son los que no encuentra en la tala definitiva. Si incluyes la clausula "WHERE DEFINITIVA.DNI IS NULL" le estás diciendo que sólo te devuelva los registros que están en la tabla autonomica y no en la definitiva. Una vez que hayas hecho esas comprobaciones, ejecuta toda la sentencia.
Inserta en la tabla definitiva todos los registros que devuelva la select que te digo. Si afinas con la select, todo en un solo paso.

Ten en cuenta que el orden de los campos en la select son importantes, ya que se cargan en el mismo orden que has puesto en la INSERT. Es decir, si en primer campo de la insert es el DNI, en la select el primer campo debe ser el DNI. ( no especificas el significado de los capos C1, C2, ...).
También ten en cuenta que la condición del where puede ser diferente ( no conozco en detalle las tablas) y por lo que comentas interviene algún campo más.

Te dejo de deberes que hagas lo siguiente:
1.- Jugar con la select hasta que te salgan los registros que necesites, así como la información que necesites ( campos en orden correcto).
2.- Ver la diferencia entre el INNER JOIN y el LEFT JOIN.
3.- Hacer la inserción ( que te tardará 15 segundos máximo).

Prueba y nos cuentas.

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita