Juan Carlos.
Dices que no sabes cuales son los campos de clave, pero si sabes cuales son los
campos que quieres insertar...supongo...y dices que los duplicados estan en la
tabla de la cual vas a leer, entonces no te compliques y haz lo siguiente...
Insert into tablaA (campo1, campo2, campo3,.....etc)
Select kampo1,kampo2,kampo3,....etc From tablaB
Where Not Exists(Select campo1,campo2,campo3,...etc From tablaA
Where campo1 = kampo1
And campo2 = Kampo2
And campo3 = kampo3
And etc = etc)
te va a funcionar...pruébalo
Saludos!!
From: [email protected]
To: [email protected]
Subject: RE: Registros duplicados en SQL
Date: Fri, 25 Mar 2011 12:53:37 +0000
Te agradeceria que me pudieras enviar un ejemplo
From: [email protected]
To: [email protected]
Subject: RE: Registros duplicados en SQL
Date: Fri, 25 Mar 2011 13:40:28 +0100
Siempre puedes saber las claves de los ficheros mediante el acceso a la
metainformación de la tabla.
Con java o similar es muy sencillo.
Saludos,
De: [email protected]
[mailto:[email protected]] En nombre de Juan Carlos
xxxxxxxxxxxxxxxxx
Enviado el: viernes, 25 de marzo de 2011 12:36
Para: [email protected]
Asunto: RE: Registros duplicados en SQL
Pero lo que no conozco son los campos claves, ya que al hacerlo de forma
generica para varios ficheros, cada uno puede tener sus propias claves.
Entiendo que en el NOT IN tengo que hacer la union por los campos claves. Lo
ideal sería que existiera algo que en lugar de poner nombres de campos se
pudiera poner "*", sin tener que estar numerandolos.
From: [email protected]
To: [email protected]
Subject: RE: Registros duplicados en SQL
Date: Fri, 25 Mar 2011 11:31:25 +0100
Si te da clave duplicada al insertar, entiendo que lo que puedes hacer es
insertar sólo los que no estén.
Puedes mirarlo antes con un not in y los que no estén los insertas.
De: [email protected]
[mailto:[email protected]] En nombre de Juan Carlos
xxxxxxxxxxxxxxxxx
Enviado el: viernes, 25 de marzo de 2011 10:37
Para: [email protected]
Asunto: RE: Registros duplicados en SQL
He probado esto que me comentas, y me sigue dando clave duplicada. El motivo
es que los registros duplicados NO los tengo en tabla 1, sino que en tabla 2 ya
hay algunos registros y estos pueden coincidir o no en clave con los de la
tabla1. En caso de que coincidan, es cuando me da el error de clave duplicada y
se para el proceso para el resto de registros de la instuccion INSERT. Yo lo
que quiero es que siga continuando insertando para aquellos que no den clave
duplicada.
From: [email protected]
To: [email protected]
Subject: RE: Registros duplicados en SQL
Date: Fri, 25 Mar 2011 09:30:29 +0100
Buenas,
Para poder hacerlo sin las claves, independientemente de si las tablas tienen
clave o no y para todos los campos, puedes hacerlo así:
Insert into tabla2
(select * from tabla1 union select * from tabla1)
Aunque parezca extraño, el unión descarta los repes.
Saludos !!!
José Luis
José Luis Moreno Rodríguez | Project manager
SC Trade Technologies
Caballero, 48 bajos 08014 Barcelona
T +34 902 48 11 10 | F +34 93 490 28 21
M 679 193 144
[email protected] | www.sctrade.es
De: [email protected]
[mailto:[email protected]] En nombre de Juan Carlos
xxxxxxxxxxxxxxxxx
Enviado el: viernes, 25 de marzo de 2011 8:39
Para: [email protected]
Asunto: RE: Registros duplicados en SQL
Me imagino que con "x" e "y" te estas refiriendo a los campos claves de uno y
otro fichero. Mi problema es que no conozco cuáles son los campos claves de las
tablas, porque quiero hacer de forma generica, que la instuccion me valga para
cualquier fichero, sin tener que ir especificacndo las claves en la instuccion.
From: [email protected]
To: [email protected]
Subject: RE: Registros duplicados en SQL
Date: Thu, 24 Mar 2011 14:27:47 +0000
Ya probaste así?
Insert into tabla UNO
Select ..... from tabla DOS
Where Not exists (Select .... from tabla UNO where x = y)
Es solo una idea...
Saludos!!
From: [email protected]
To: [email protected]
Subject: Registros duplicados en SQL
Date: Thu, 24 Mar 2011 13:33:37 +0000
Hola a todos.
Necesitaría insertar unos registros con SQL en una tabla B a partir de otra
tabla A. Pero me da error de registros duplicados porque algunos ya existen. Lo
que yo quisiera es que aquellos que NO den clave duplicada insertarlos y los
que den clave duplicada no insertarlos, pero que no se interrumpa el proceso
del INSERT. El problema lo tengo en que quiero hacerlo de forma genérica que me
valga para varios ficheros y cada uno de ellos pueden tener claves distintas,
de forma que no puedo indicar en la sentencia SQL los campos claves. ¿Se os
ocurre alguna forma de hacerlo?
Gracias de antemano.
Saludos.
____________________________________________________ �nete a Recursos AS400,
nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 � Publicaciones
Help400, S.L.
____________________________________________________ �nete a Recursos AS400,
nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 � Publicaciones
Help400, S.L.
____________________________________________________ �nete a Recursos AS400,
nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 � Publicaciones
Help400, S.L.
____________________________________________________ �nete a Recursos AS400,
nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 � Publicaciones
Help400, S.L.
____________________________________________________ �nete a Recursos AS400,
nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 � Publicaciones
Help400, S.L.
____________________________________________________ �nete a Recursos AS400,
nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 � Publicaciones
Help400, S.L.
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.