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

Problemas con INSERT INTO

Estas en el tema de Problemas con INSERT INTO en el foro de SQL Server en Foros del Web. Hola a todos, y gracias de antemano Estoy tratando de añadir registros de una tabla a otra de tal manera que sólo inserte los que ...
  #1 (permalink)  
Antiguo 21/09/2009, 11:08
 
Fecha de Ingreso: julio-2008
Mensajes: 7
Antigüedad: 15 años, 9 meses
Puntos: 0
Problemas con INSERT INTO

Hola a todos, y gracias de antemano

Estoy tratando de añadir registros de una tabla a otra de tal manera que sólo inserte los que no existan. Por ejemplo:

Tengo las tablas:
- LISTADOS (IDListado, Listado)
- USUARIOS (IDUsuario, Usuario)
- LISTADOS_X_USUARIO (ID, IDListado, IDUsuario)

La tabla LISTADOS_X_USUARIO tiene un indice único uniendo campos IDListado y IDUsuario.

De vez en cuando se añaden registros a la tabla LISTADOS, entonces yo ejecuto la consulta:
INSERT INTO LISTADOS_X_USUARIO (IDListado, IDUsuario)
SELECT LISTADOS.IDListado, USUARIOS.IDUsuario
FROM LISTADOS, USUARIOS

para que me añada todos los listados a cada usuario, y como tengo el indice unico, no me añadirá los registros que ya estén. Pero en cuanto encuentra un registro exisente no continua, no añade ninguno, y se para, y me da error de indice duplicado. Yo esperaba que no añadiera los duplicados y sí los que no estén.

¿Cómo hago para que continue y sólo me añada los nuevos registros?

Gracias
  #2 (permalink)  
Antiguo 21/09/2009, 11:37
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Problemas con INSERT INTO

Es LOGICO, que si estas intentando insertar registros duplicados, te envie el mensaje de error y TU tomes acciones, recuerda que SQL Server, como MUCHOS otros motores, no es INTERACTIVO, si no, se dentendria y te preguntaria, ¿Que hago en este caso, estas intentando ingresar registros duplicados? 1-ignora, 2-sobre-escribe, 3...etc.....

¿Cierto?

Ademas, te falta hacer la liga entre las tablas LISTADOS y USUARIOS.

INSERT INTO LISTADOS_X_USUARIO (IDListado, IDUsuario)
SELECT LISTADOS.IDListado, USUARIOS.IDUsuario
FROM LISTADOS a INNER JOIN USUARIOS b ON ........... como se unen estas tablas????
WHERE NOT EXISTS(SELECT * FROM LISTADOS_X_USUARIO d inner join a.campo = d.campo and inner join c.campo = d.campo)
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 12:14.