Ingresar datos desde otra tabla

Quisiera ayuda en la creación del siguiente scripts:
Ingresar datos de una tabla a otra pero que cumpla algunas condiciones, la relación que existe entre las dos tablas es el código que el script lo busque y si se encuentra en las dos tablas me ingrese un valor en una columna que elija...

1 respuesta

Respuesta
1
Hay varias formas, voy a suponer que el campo que quieres marcar está en la tabla1
Yo personalmente haría una vista primero con las dos tablas
haces un vista del tipo 
select * from tabla1 inner join tabla2 on   tabla1.campo=tabla2.campo where tabla1.campomarcado=0
campo es el campo de unión de las 2 tablas
Campo marcado es el campo que utilizamos como control, una vez marcado ese registro no vuelve a aparecer en la vista y no volvemos a marcarlo
esta vista devolverá datos si hay registros en la tabla1 y tabla2
haces un job de sql que se ejcute cada minuto con 
update tabla1 set campomarcado=1
si la vista devuelve resultados marcará todos los registros, esto es como porque solo es una instrucción y lo puedes programar cada minuto
Si las necesidades son otras entonces puedes probar esto
Hace falta un cursor para recorrer la tabla1 y buscar los campos en la tabla2, esto es mucho mas lento que el ejemplo anterio
declare @id as int        --variable para recorrer la tabla1
declare cur cursor for    --declaramos un cursos para recorrer una tabla
selet id from tabla2       --cargamos todos los id de la tabla2
open cur
fetch from cur into @id   --almacenamos el primer id en mi variable
while @@fetch_status=0  --si hay registros, esta condición no se cumple al llegar al final
begin
update tabla1 set campomarcado=1 where id=@id
fetch next from cur into @id   --cargo el seguiente id
end
close cur
deallocate cut
en este caso recorro la tabla 2 y luego marco los registros de la tabla 1, este script recorre la tabla dos entera y luego va buscando en la primera por eso es mas lento.
Luego tienes una combianción de los dos
haces la vista y haces el cursor recorriendo la vista en vez de tabla2, de esta forma el cursos solo se carga si la vista tiene datos, tarda menos que  la opción 2 pero mas que la opción 1
declare @id as int        --variable para recorrer la tabla1
declare cur cursor for    --declaramos un cursos para recorrer una tabla
selet id from Vista       --cargamos todos los id de la VISTA
open cur
fetch from cur into @id   --almacenamos el primer id en mi variable
while @@fetch_status=0  --si hay registros, esta condición no se cumple al llegar al final
begin
update tabla1 set campomarcado=1 where id=@id
fetch next from cur into @id   --cargo el seguiente id
end
close cur
deallocate cut
depende de lo que estés haciendo, para que lo necesites y la forma en que se va a ejecutar este script puede haber muchas otras soluciones.
No se si te ha servido o hay que aclarar algo
Tengo muchas preguntas activas si esta resuelto finaliza por favor sino cuéntame como vamos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas