insercion por cada registro de una select

02/11/2004 - 12:24 por Oterox | Informe spam
Hola a todos.

Tengo un select * from tabla where id=1 y quiero que por cada registro q me
devuelva esa select hacer una insercion en otra tabla.Como podria hacer eso?

Gracias.

Preguntas similare

Leer las respuestas

#6 Salvador Ramos
02/11/2004 - 16:58 | Informe spam
En ese caso, utiliza la opción que te indica Carlos:

INSERT INTO TBL_PEDIDOS_ARTICULOS_CONSIGNATARIOS
SELECT ...

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net
¿ Te interesa participar en las reuniones
del grupo de Usuarios de SQL Server y .NET ?
Se harán en levante de España, (Alicante o Murcia)?

"Oterox" escribió en el mensaje
news:
tengo q insertar en una tabla de pedidos todos los articulos de un pedido
para cada consignatario(destinatario) es decir:

si para el pedido 1 hay 2 articulos en TBL_PEDIDOS_ARTICULOS:
id_pedido | id_articulo | nombre | cantidad
1 1 articulo1 10
1 2 articulo2 200
y hay 2 consignatarios en TBL_PEDIDOS_CONSIGNATARIOS:
id_pedido | id_consignatario
1 1
1 2
Deberian hacerse estas inserciones en
TBL_PEDIDOS_ARTICULOS_CONSIGNATARIOS:
id_pedido | id_articulo | id_consignatario | nombre | cantidad
1 1 1 articulo1 10
1 2 1 articulo2 200
1 1 2 articulo1 10
1 2 2 articulo2 200


"Carlos Sacristan" <csacristan ARROBA mvps.org> wrote in message
news:%
No, la opción que has encontrado no es la mejor solución (en la


mayoría
de los casos, un cursor no es la mejor opción). Indícanos qué necesitas
hacer, porque lo más probable es que lo único que necesites sea la


sentencia
INSERT ... SELECT que te comenté


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Oterox" escribió en el mensaje
news:
> Ya lo he resuelto:
>
> declare @ped_id varchar(50), @art_id varchar(50), @pedart_cantidad
> varchar(50)
>
> DECLARE art_cursor CURSOR FOR
>
> SELECT ped_id,art_id,pedart_cantidad FROM TBL_PEDIDOS_ARTICULOS WHERE
> ped_id=2
>
> OPEN art_cursor
>
>
>
> FETCH NEXT FROM art_cursor into @ped_id, @art_id, @pedart_cantidad
>
>
>
> WHILE @@FETCH_STATUS = 0
>
> BEGIN
>
> print @ped_id + '-' + @art_id + '-' + @pedart_cantidad
>
>
> FETCH NEXT FROM art_cursor into @ped_id, @art_id, @pedart_cantidad
>
> END
>
> CLOSE art_cursor
>
> DEALLOCATE art_cursor
>
> "Oterox" wrote in message
> news:
> > Hola a todos.
> >
> > Tengo un select * from tabla where id=1 y quiero que por cada
> > registro


q
> me
> > devuelva esa select hacer una insercion en otra tabla.Como podria


hacer
> eso?
> >
> > Gracias.
> >
> >
>
>






Respuesta Responder a este mensaje
#7 Oterox
02/11/2004 - 17:03 | Informe spam
Y eso como seria porque no me entero.No tendria que anidar dos selects??


"Salvador Ramos" wrote in message
news:%
En ese caso, utiliza la opción que te indica Carlos:

INSERT INTO TBL_PEDIDOS_ARTICULOS_CONSIGNATARIOS
SELECT ...

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net
¿ Te interesa participar en las reuniones
del grupo de Usuarios de SQL Server y .NET ?
Se harán en levante de España, (Alicante o Murcia)?

"Oterox" escribió en el mensaje
news:
> tengo q insertar en una tabla de pedidos todos los articulos de un


pedido
> para cada consignatario(destinatario) es decir:
>
> si para el pedido 1 hay 2 articulos en TBL_PEDIDOS_ARTICULOS:
> id_pedido | id_articulo | nombre | cantidad
> 1 1 articulo1 10
> 1 2 articulo2 200
> y hay 2 consignatarios en TBL_PEDIDOS_CONSIGNATARIOS:
> id_pedido | id_consignatario
> 1 1
> 1 2
> Deberian hacerse estas inserciones en
> TBL_PEDIDOS_ARTICULOS_CONSIGNATARIOS:
> id_pedido | id_articulo | id_consignatario | nombre | cantidad
> 1 1 1 articulo1 10
> 1 2 1 articulo2 200
> 1 1 2 articulo1 10
> 1 2 2 articulo2 200
>
>
> "Carlos Sacristan" <csacristan ARROBA mvps.org> wrote in message
> news:%
>> No, la opción que has encontrado no es la mejor solución (en la
> mayoría
>> de los casos, un cursor no es la mejor opción). Indícanos qué necesitas
>> hacer, porque lo más probable es que lo único que necesites sea la
> sentencia
>> INSERT ... SELECT que te comenté
>>
>>
>> Un saludo
>>
>> -
>> "Sólo sé que no sé nada. " (Sócrates)
>>
>> Por favor, responder únicamente al foro
>> Se agradece la inclusión de sentencias DDL
>>
>>
>> "Oterox" escribió en el mensaje
>> news:
>> > Ya lo he resuelto:
>> >
>> > declare @ped_id varchar(50), @art_id varchar(50), @pedart_cantidad
>> > varchar(50)
>> >
>> > DECLARE art_cursor CURSOR FOR
>> >
>> > SELECT ped_id,art_id,pedart_cantidad FROM TBL_PEDIDOS_ARTICULOS WHERE
>> > ped_id=2
>> >
>> > OPEN art_cursor
>> >
>> >
>> >
>> > FETCH NEXT FROM art_cursor into @ped_id, @art_id, @pedart_cantidad
>> >
>> >
>> >
>> > WHILE @@FETCH_STATUS = 0
>> >
>> > BEGIN
>> >
>> > print @ped_id + '-' + @art_id + '-' + @pedart_cantidad
>> >
>> >
>> > FETCH NEXT FROM art_cursor into @ped_id, @art_id, @pedart_cantidad
>> >
>> > END
>> >
>> > CLOSE art_cursor
>> >
>> > DEALLOCATE art_cursor
>> >
>> > "Oterox" wrote in message
>> > news:
>> > > Hola a todos.
>> > >
>> > > Tengo un select * from tabla where id=1 y quiero que por cada
>> > > registro
> q
>> > me
>> > > devuelva esa select hacer una insercion en otra tabla.Como podria
> hacer
>> > eso?
>> > >
>> > > Gracias.
>> > >
>> > >
>> >
>> >
>>
>>
>
>


Respuesta Responder a este mensaje
#8 Oterox
02/11/2004 - 17:28 | Informe spam
ya se como, me estaba liando un poco ;-)

INSERT INTO TBL_PEDIDOS_ARTICULOS_CONSIGNATARIOS
SELECT sam_user.TBL_PEDIDOS_ARTICULOS.ped_id,
sam_user.TBL_PEDIDOS_ARTICULOS.art_id,
sam_user.TBL_PEDIDOS_ARTICULOS.pedart_cantidad,
sam_user.TBL_PEDIDOS_CONSIGNATARIOS.con_id
FROM sam_user.TBL_PEDIDOS_ARTICULOS INNER JOIN
sam_user.TBL_PEDIDOS_CONSIGNATARIOS ON
sam_user.TBL_PEDIDOS_ARTICULOS.ped_id sam_user.TBL_PEDIDOS_CONSIGNATARIOS.ped_id

Muchas gracias por vuestra ayuda.
salu2.



"Oterox" wrote in message
news:
Y eso como seria porque no me entero.No tendria que anidar dos selects??


"Salvador Ramos" wrote in message
news:%
> En ese caso, utiliza la opción que te indica Carlos:
>
> INSERT INTO TBL_PEDIDOS_ARTICULOS_CONSIGNATARIOS
> SELECT ...
>
> Un saludo
> Salvador Ramos
> Murcia - España
> [Microsoft MVP SQL Server]
> www.helpdna.net
> ¿ Te interesa participar en las reuniones
> del grupo de Usuarios de SQL Server y .NET ?
> Se harán en levante de España, (Alicante o Murcia)?
>
> "Oterox" escribió en el mensaje
> news:
> > tengo q insertar en una tabla de pedidos todos los articulos de un
pedido
> > para cada consignatario(destinatario) es decir:
> >
> > si para el pedido 1 hay 2 articulos en TBL_PEDIDOS_ARTICULOS:
> > id_pedido | id_articulo | nombre | cantidad
> > 1 1 articulo1 10
> > 1 2 articulo2 200
> > y hay 2 consignatarios en TBL_PEDIDOS_CONSIGNATARIOS:
> > id_pedido | id_consignatario
> > 1 1
> > 1 2
> > Deberian hacerse estas inserciones en
> > TBL_PEDIDOS_ARTICULOS_CONSIGNATARIOS:
> > id_pedido | id_articulo | id_consignatario | nombre | cantidad
> > 1 1 1 articulo1 10
> > 1 2 1 articulo2 200
> > 1 1 2 articulo1 10
> > 1 2 2 articulo2 200
> >
> >
> > "Carlos Sacristan" <csacristan ARROBA mvps.org> wrote in message
> > news:%
> >> No, la opción que has encontrado no es la mejor solución (en la
> > mayoría
> >> de los casos, un cursor no es la mejor opción). Indícanos qué


necesitas
> >> hacer, porque lo más probable es que lo único que necesites sea la
> > sentencia
> >> INSERT ... SELECT que te comenté
> >>
> >>
> >> Un saludo
> >>
> >> -
> >> "Sólo sé que no sé nada. " (Sócrates)
> >>
> >> Por favor, responder únicamente al foro
> >> Se agradece la inclusión de sentencias DDL
> >>
> >>
> >> "Oterox" escribió en el mensaje
> >> news:
> >> > Ya lo he resuelto:
> >> >
> >> > declare @ped_id varchar(50), @art_id varchar(50), @pedart_cantidad
> >> > varchar(50)
> >> >
> >> > DECLARE art_cursor CURSOR FOR
> >> >
> >> > SELECT ped_id,art_id,pedart_cantidad FROM TBL_PEDIDOS_ARTICULOS


WHERE
> >> > ped_id=2
> >> >
> >> > OPEN art_cursor
> >> >
> >> >
> >> >
> >> > FETCH NEXT FROM art_cursor into @ped_id, @art_id, @pedart_cantidad
> >> >
> >> >
> >> >
> >> > WHILE @@FETCH_STATUS = 0
> >> >
> >> > BEGIN
> >> >
> >> > print @ped_id + '-' + @art_id + '-' + @pedart_cantidad
> >> >
> >> >
> >> > FETCH NEXT FROM art_cursor into @ped_id, @art_id, @pedart_cantidad
> >> >
> >> > END
> >> >
> >> > CLOSE art_cursor
> >> >
> >> > DEALLOCATE art_cursor
> >> >
> >> > "Oterox" wrote in message
> >> > news:
> >> > > Hola a todos.
> >> > >
> >> > > Tengo un select * from tabla where id=1 y quiero que por cada
> >> > > registro
> > q
> >> > me
> >> > > devuelva esa select hacer una insercion en otra tabla.Como podria
> > hacer
> >> > eso?
> >> > >
> >> > > Gracias.
> >> > >
> >> > >
> >> >
> >> >
> >>
> >>
> >
> >
>
>


Respuesta Responder a este mensaje
#9 Salvador Ramos
02/11/2004 - 19:14 | Informe spam
Me alegro que te hayas aclarado, es así, simplemente coges la instrucción
SELECT que necesitas y delante le pones INSER INTO.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net
¿ Te interesa participar en las reuniones
del grupo de Usuarios de SQL Server y .NET ?
Se harán en levante de España, (Alicante o Murcia)?

"Oterox" escribió en el mensaje
news:
ya se como, me estaba liando un poco ;-)

INSERT INTO TBL_PEDIDOS_ARTICULOS_CONSIGNATARIOS
SELECT sam_user.TBL_PEDIDOS_ARTICULOS.ped_id,
sam_user.TBL_PEDIDOS_ARTICULOS.art_id,
sam_user.TBL_PEDIDOS_ARTICULOS.pedart_cantidad,
sam_user.TBL_PEDIDOS_CONSIGNATARIOS.con_id
FROM sam_user.TBL_PEDIDOS_ARTICULOS INNER JOIN
sam_user.TBL_PEDIDOS_CONSIGNATARIOS ON
sam_user.TBL_PEDIDOS_ARTICULOS.ped_id > sam_user.TBL_PEDIDOS_CONSIGNATARIOS.ped_id

Muchas gracias por vuestra ayuda.
salu2.



"Oterox" wrote in message
news:
Y eso como seria porque no me entero.No tendria que anidar dos selects??


"Salvador Ramos" wrote in message
news:%
> En ese caso, utiliza la opción que te indica Carlos:
>
> INSERT INTO TBL_PEDIDOS_ARTICULOS_CONSIGNATARIOS
> SELECT ...
>
> Un saludo
> Salvador Ramos
> Murcia - España
> [Microsoft MVP SQL Server]
> www.helpdna.net
> ¿ Te interesa participar en las reuniones
> del grupo de Usuarios de SQL Server y .NET ?
> Se harán en levante de España, (Alicante o Murcia)?
>
> "Oterox" escribió en el mensaje
> news:
> > tengo q insertar en una tabla de pedidos todos los articulos de un
pedido
> > para cada consignatario(destinatario) es decir:
> >
> > si para el pedido 1 hay 2 articulos en TBL_PEDIDOS_ARTICULOS:
> > id_pedido | id_articulo | nombre | cantidad
> > 1 1 articulo1 10
> > 1 2 articulo2 200
> > y hay 2 consignatarios en TBL_PEDIDOS_CONSIGNATARIOS:
> > id_pedido | id_consignatario
> > 1 1
> > 1 2
> > Deberian hacerse estas inserciones en
> > TBL_PEDIDOS_ARTICULOS_CONSIGNATARIOS:
> > id_pedido | id_articulo | id_consignatario | nombre | cantidad
> > 1 1 1 articulo1 10
> > 1 2 1 articulo2 200
> > 1 1 2 articulo1 10
> > 1 2 2 articulo2 200
> >
> >
> > "Carlos Sacristan" <csacristan ARROBA mvps.org> wrote in message
> > news:%
> >> No, la opción que has encontrado no es la mejor solución (en la
> > mayoría
> >> de los casos, un cursor no es la mejor opción). Indícanos qué


necesitas
> >> hacer, porque lo más probable es que lo único que necesites sea la
> > sentencia
> >> INSERT ... SELECT que te comenté
> >>
> >>
> >> Un saludo
> >>
> >> -
> >> "Sólo sé que no sé nada. " (Sócrates)
> >>
> >> Por favor, responder únicamente al foro
> >> Se agradece la inclusión de sentencias DDL
> >>
> >>
> >> "Oterox" escribió en el mensaje
> >> news:
> >> > Ya lo he resuelto:
> >> >
> >> > declare @ped_id varchar(50), @art_id varchar(50), @pedart_cantidad
> >> > varchar(50)
> >> >
> >> > DECLARE art_cursor CURSOR FOR
> >> >
> >> > SELECT ped_id,art_id,pedart_cantidad FROM TBL_PEDIDOS_ARTICULOS


WHERE
> >> > ped_id=2
> >> >
> >> > OPEN art_cursor
> >> >
> >> >
> >> >
> >> > FETCH NEXT FROM art_cursor into @ped_id, @art_id, @pedart_cantidad
> >> >
> >> >
> >> >
> >> > WHILE @@FETCH_STATUS = 0
> >> >
> >> > BEGIN
> >> >
> >> > print @ped_id + '-' + @art_id + '-' + @pedart_cantidad
> >> >
> >> >
> >> > FETCH NEXT FROM art_cursor into @ped_id, @art_id, @pedart_cantidad
> >> >
> >> > END
> >> >
> >> > CLOSE art_cursor
> >> >
> >> > DEALLOCATE art_cursor
> >> >
> >> > "Oterox" wrote in message
> >> > news:
> >> > > Hola a todos.
> >> > >
> >> > > Tengo un select * from tabla where id=1 y quiero que por cada
> >> > > registro
> > q
> >> > me
> >> > > devuelva esa select hacer una insercion en otra tabla.Como
> >> > > podria
> > hacer
> >> > eso?
> >> > >
> >> > > Gracias.
> >> > >
> >> > >
> >> >
> >> >
> >>
> >>
> >
> >
>
>






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida