Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

ayuda: sql para introducir registros no repetidos

Estas en el tema de ayuda: sql para introducir registros no repetidos en el foro de Bases de Datos General en Foros del Web. a ver, tengo una tabla principal con un campo clave campo1, y una secundaria con los mismos campos aunque no sean clave. en la secundaria ...
  #1 (permalink)  
Antiguo 15/02/2010, 05:35
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
ayuda: sql para introducir registros no repetidos

a ver, tengo una tabla principal con un campo clave campo1, y una secundaria con los mismos campos aunque no sean clave.

en la secundaria hay muchos registros, algunos están y otros no están en la principal.
tengo que añadir a la tabla principal los que no están, en base al campo1 que es la clave.

es decir, la tabla principal tiene que tener todos los registros con ese campo no repetido, para luego borrar la tabla secundaria.

he hecho esta sentencia, creo que me funcionó con tablas pequeñas, pero ahora que las tablas tienen varios cientos de registros cada una (tampoco es para tanto), se muere y se queda bloqueado.

INSERT INTO tablaprincipal (campo1,campo2)
SELECT DISTINCT [tablasecundaria].campo1, [tablasecundaria].campo2
FROM tablaprincipal, tablasecundaria
WHERE tablasecundaria.campo1 not in (select tablaprincipal.campo1 from tablaprincipal);

como lo veis?
:P
  #2 (permalink)  
Antiguo 15/02/2010, 07:06
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: ayuda: sql para introducir registros no repetidos

Hola cetopi

No entiendo para que declaras tablaprincipal en la consulta. Para mi sería así
Código SQL:
Ver original
  1. INSERT INTO tablaprincipal (campo1,campo2)
  2. SELECT DISTINCT [tablasecundaria].campo1, [tablasecundaria].campo2
  3. FROM tablasecundaria
  4. WHERE tablasecundaria.campo1 NOT IN (SELECT tablaprincipal.campo1 FROM tablaprincipal);

Otra cosa que puedes probar si el problema es de rendimiento es:

Código SQL:
Ver original
  1. INSERT INTO tablaprincipal (campo1,campo2)
  2. SELECT DISTINCT [tablasecundaria].campo1, [tablasecundaria].campo2
  3. FROM tablasecundaria
  4. LEFT JOIN
  5. tablaprincipal
  6. ON tablasecundaria.campo1=tabolaprincipal.campo1
  7. WHERE tablasecundaria.campo2 IS NOT NULL;

No lo he probado
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: introducir, registros, repetidos, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:53.