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

Ideas con un Insert

Estas en el tema de Ideas con un Insert en el foro de SQL Server en Foros del Web. Hola. Si alguien tiene tiempo de ayudarme con ideas, ya que soy nuevo con esto del SQL. Tengo 2 tablas algo asi; tPROV Proveedor | ...
  #1 (permalink)  
Antiguo 14/06/2012, 08:56
 
Fecha de Ingreso: marzo-2012
Mensajes: 17
Antigüedad: 6 años, 6 meses
Puntos: 0
Pregunta Ideas con un Insert

Hola.

Si alguien tiene tiempo de ayudarme con ideas, ya que soy nuevo con esto del SQL.

Tengo 2 tablas algo asi;

tPROV

Proveedor | AtencionDe
--------------------------------
00001 D1
00001 D2
00001 D3
00002 D1
00002 D2
00002 D3
00003 D1
00003 D5
00003 D7
.
.
.

99998 D1
99998 D2
99998 D3
99999 D1
99999 D2
99999 D3

tPROVcambio

proveedor | atencionde
--------------------------------
00002 D3
00003 D3
00004 D3
.
.
.
99999 D3

Quiero meter todos los datos de la tabla tPROVcambio en tPROV
La tabla tPROV no puede tener "AtencioDe" duplicado por "Proveedor",
si lo hago quedaria

Proveedor | AtencionDe
--------------------------------
00002 D1
00002 D2
00002 D3
00002 D3 .

Por poner un ejemplo.

Me han dicho que con subconsultas y EXISTS pero no se como podrias hacerle.

Algun tip que me den me ayudaria mucho

Espero que puedan ayudar.

Gracias

Última edición por dukker; 14/06/2012 a las 09:01
  #2 (permalink)  
Antiguo 14/06/2012, 09:21
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.295
Antigüedad: 12 años, 1 mes
Puntos: 758
Respuesta: Ideas con un Insert

Podria ser con algo asi :)

Código SQL:
Ver original
  1. CREATE TABLE #proveedor
  2. (
  3. proveedor VARCHAR(10),
  4. ade VARCHAR(10)
  5. )
  6. INSERT INTO #proveedor VALUES ('00001','D1')
  7. INSERT INTO #proveedor VALUES ('00001','D2')
  8. INSERT INTO #proveedor VALUES ('00001','D3')
  9. INSERT INTO #proveedor VALUES ('00002','D1')
  10. INSERT INTO #proveedor VALUES ('00002','D2')
  11. INSERT INTO #proveedor VALUES ('00002','D3')
  12.  
  13. CREATE TABLE #cambio(
  14. proveedor VARCHAR(10),
  15. ade VARCHAR(10)
  16. )
  17. INSERT INTO #cambio VALUES ('00002','D3')
  18. INSERT INTO #cambio VALUES ('00003','D3')
  19. INSERT INTO #cambio VALUES ('00004','D3')
  20.  
  21. INSERT INTO #cambio
  22. SELECT p.proveedor,p.ade FROM #proveedor AS p
  23. LEFT JOIN #cambio AS c ON (p.proveedor+p.ade=c.proveedor+c.ade)
  24. WHERE c.proveedor IS NULL
  25.  
  26. SELECT * FROM #cambio
  27.  
  28. [B]
  29. Proveedor Ade
  30. 00002   D3
  31. 00003   D3
  32. 00004   D3
  33. 00001   D1
  34. 00001   D2
  35. 00001   D3
  36. 00002   D1
  37. 00002   D2
  38. [/B]
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 14/06/2012, 09:31
 
Fecha de Ingreso: marzo-2012
Mensajes: 17
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: Ideas con un Insert

Gracias LIBRAS, voy a implementarlo enseguida y rregreso para comentar como me fue

Saludos

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Oye mira analice el script que sugieres, lo que hice fue solo cambiar en el insert #CAMBIO por que es en #PROVEEDOR donde debo insertar los de #CAMBIO., funciono en la tabla temporal que colocas, osea esta OK,

Pero al implementarlo en la tabla real me arroja el mismo error que traigo

"Violation of PRIMARY KEY constraint 'pritPROV'. Cannot insert duplicate key in object 'tPROV.
The statement has been terminated."

que supongo que en algun caso se aplica lo que mencione arriba.

Que puedo intentar?

Última edición por dukker; 14/06/2012 a las 09:42
  #4 (permalink)  
Antiguo 14/06/2012, 10:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.295
Antigüedad: 12 años, 1 mes
Puntos: 758
Respuesta: Ideas con un Insert

que puedes intentar? acomodarlo por tu cuenta, digo ya te di lo mas complicado ahora tu ponle un poquito de tu parte la solucion ya casi esta echa.... :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: exists, insert, subconsulta, subquery
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 09:00.