Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Agragar datos de un tabla en otra sin duplicar los datos (https://www.clubdelphi.com/foros/showthread.php?t=52970)

jadamezs 06-02-2008 10:42:57

Agragar datos de un tabla en otra sin duplicar los datos
 
Tengo una tabla listado y quiero copiar en dicha tabla los datos de otra tabla llamada listados2 pero que no se repita ninguno de los campos. Las tablas no tienen ninguna clave primaria y tienen los mismos campos.

Saludos

Neftali [Germán.Estévez] 06-02-2008 11:56:20

Creo que lo más eficiente es que utilices claves primarias o índices únicos. Las demás opciones son "inventos" y bajarán la eficiencia con respecto a esta.

sinalocarlos 07-02-2008 00:36:45

El comentario de Neftali es por demás acertado, hablando de métodos para asegurarte de no insertar registros duplicados, pero creo que jadamezs se refiere a un método para copiar información de una tabla "T1" a otra "T2" sin que se repitan registros en la tabla destino, es así jadamezs?

jadamezs 07-02-2008 07:55:33

Efectivamente pero creo que ya se como se hace
insert into listados1 select * from listados2 where campo1 not in (select campo1 from listados1)

Neftali [Germán.Estévez] 07-02-2008 10:26:40

No tengo claro que eso funcione, ni lo eficiente que puede ser con bastantes registros; De todas formas en tu mensaje inicial dices que no se repita "ninguno de los campos". En este caso sólo lo estás haciendo para "Campo1".
No entiendo.

sinalocarlos 07-02-2008 17:40:44

mmm, me perdí, me imaginaba yo que lo que necesitabas hacer es dada una tabla "tablaUno" insertarle información de otra,llamemosla "tablaDos" que tienen los mismos campos, pero como dices: "pero que no se repita ninguno de los campos" imagine que tenias registros repetidos, es decir, con información idéntica en todos los campos, al ver tu script veo que solo validas uno, en todo caso pensare que es solo un ejemplo para mostrarnos como lo harías, pero como comenta Neftali el rendimiento bajara considerablemente si pretendes hacer eso continuamente, una forma sencilla de hacerlo es:

Código SQL [-]
insert into tablaUno (c1,c2,c4,c4,c5)
select c1,c2,c4,c4,c5 from tablaDos left outer join tablaUno on 
tablaDos.c1 =  tablaUno.c1 and tablaDos.c2 =  tablaUno.c2 --tantos como quieras validar
where tablaUno.c1 IS NULL group by c1,c2,c4,c4,c5


básicamente estamos filtrando los registros a insertar en base a la tabla destino y agrupándolos para que no te generen repetidos

eso era o sigo perdido?


La franja horaria es GMT +2. Ahora son las 12:40:21.

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