Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Bases de datos > Firebird e Interbase
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

 
 
Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #10  
Old 17/07/2013
fjcg02's Avatar
[fjcg02] fjcg02 is offline
Miembro Premium
 
Join Date: Dec 2003
Location: Zamudio
Posts: 1,418
Poder: 24
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 -
Reply With Quote
 


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Aportación del código de un stored procedure para conversión literal de números birmain Firebird e Interbase 12 16/07/2015 19:12
Insertar desde una tabla con loop en stored procedure Fita Firebird e Interbase 2 04/06/2013 00:39
Problema con Stored Procedure para actualizar tabla con datos de otra tabla. Adrian Murua MySQL 4 04/02/2012 02:54
Insertar en Un Stored Procedure DasGrun Firebird e Interbase 7 13/12/2011 23:46
Stored Procedure !!! Ledian_Fdez C++ Builder 0 02/03/2010 14:01


All times are GMT +2. The time now is 14:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi