none
Insertar registros de una tabla a otra

    Question

  • hola a todos, tengo la siguiente estructura y quiero insertar registros de la tabla 2 a la tabla1 (sin uso de update)

    las llaves de las tablas son los cod_oficina

    create table tabla1 (
    cliente varchar(50) null,
    cod_oficina varchar(3) null,
    oficina varchar(10)null,
    zona    varchar(10)null
    )

    create table tabla2 (
    cod_oficina varchar(3) null,
    oficina varchar(10)null,
    zona    varchar(10)null
    )
    insert into tabla1 values('C01','OF1','',''),
    (
    'C02','OF1','',''),('C03','OF2','','')

    insert into tabla2 values('OF1','oficina1','sur'),
    (
    'OF1','oficina1','sur'),('OF2','oficina2','este')


    maculdes

    Tuesday, May 22, 2012 4:27 PM

Answers

  • Hola,
    Bueno mira en realidad la operación UPDATE para SQL server son dos operaciones juntas que son respectivamente:
    DELETE e INSERT; es decir, cuando actualizas un registro internamente primero se hace un DELETE del registro y luego un INSERT con la información actualizada, esto lo puedes evidenciar con el manejo de triggers !!

    Lo que quiero decir es que la instrucción INSERT lo que hace es INSERTAR registros no actualizar, sin embargo si no deseas utilizar ese UPDATE puedes hacer la misma operación pero utilizando dos tablas temporables o variables tipo tabla para que llegues al mismo fin (actualizar sin update) !!

    La verdad no se por que necesitas utilizar eso así, no es muy recomendado en términos de rendimiento y lleva el triple de código !

    Espero haberte ayudado,


    Un saludo, Cristian Pérez

    Tuesday, May 22, 2012 7:44 PM

All replies

  • Hola,

    Podrías ser un poco mas claro,

    Quieres que cuando se guarde un registro en tu tabla 2 este se replique a la tabla 1 ?

    O quieres que cuando se actualice un registro en la tabla 2, se actualice la información de la tabla uno que tiene la misma clave (cod_oficina) ?

    Trata de ser un poco mas especifico que esta algo confusa la pregunta,


    Un saludo, Cristian Pérez

    Tuesday, May 22, 2012 4:35 PM
  • no requiero tanta maravilla,

    solo una consulta que inserte registros


    maculdes

    Tuesday, May 22, 2012 4:45 PM
  • Realmente no me queda muy claro, si requieres insertar en una tabla 2 filas que sean tomadas de la tabla 1 puedes perfectamente usar:

    INSERT INTO Tabla2(Col1,Col2,Col3,et)
    SELECT Col1,Col2,...
    FROM Tabla1
    WHERE XYZ...

    Teniendo por supuesto los cuidados requeridos para el tema de la concordancia entre columnas y tipos de datos.

    "How many years can some people exist before they're allowed to be free" Bob Dylan Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

    Tuesday, May 22, 2012 4:56 PM
  • Hola,

    Listo, ejecute tus scripts y creo haberte entendido, quieres que las columnas que estén nulas en la tabla 1 se llenen con la información que hay en tu tabla 2 a travez de la clave cod_oficina??

    Si es así, dos preguntas:

    Quieres que la información se actualice cuando se ingresa; es decir, que cuando guardes un registro en tu tabla dos algo se encargue de actualizar los nulos de la tabla uno?

    O simplemente una consulta que tú la ejecutes cuando la necesites ?


    Un saludo, Cristian Pérez

    Tuesday, May 22, 2012 5:00 PM
  • simplemente una consulta para ejecutarla cuando la requiera


    maculdes

    Tuesday, May 22, 2012 5:04 PM
  • Ok, prueba con este script:

    UPDATE tabla1 SET oficina = tabla2.oficina, zona = tabla2.zona 
    FROM tabla1 INNER JOIN tabla2 ON tabla1.cod_oficina = tabla2.cod_oficina


    Un saludo, Cristian Pérez

    Tuesday, May 22, 2012 7:09 PM
  • bueno yo lo habia hecho de esa manera, pero hay forma de que sea por insert into ??

    maculdes

    Tuesday, May 22, 2012 7:35 PM
  • Hola,
    Bueno mira en realidad la operación UPDATE para SQL server son dos operaciones juntas que son respectivamente:
    DELETE e INSERT; es decir, cuando actualizas un registro internamente primero se hace un DELETE del registro y luego un INSERT con la información actualizada, esto lo puedes evidenciar con el manejo de triggers !!

    Lo que quiero decir es que la instrucción INSERT lo que hace es INSERTAR registros no actualizar, sin embargo si no deseas utilizar ese UPDATE puedes hacer la misma operación pero utilizando dos tablas temporables o variables tipo tabla para que llegues al mismo fin (actualizar sin update) !!

    La verdad no se por que necesitas utilizar eso así, no es muy recomendado en términos de rendimiento y lleva el triple de código !

    Espero haberte ayudado,


    Un saludo, Cristian Pérez

    Tuesday, May 22, 2012 7:44 PM
  • ok. gracias por la explicacion

    maculdes

    Tuesday, May 22, 2012 7:52 PM
  • Recuerda marcar como respuesta el comentario que haya solucionado tu inconveniente!

    Un saludo, Cristian Pérez

    Wednesday, May 23, 2012 1:24 AM