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

insertar el resultado de un SELECT

Estas en el tema de insertar el resultado de un SELECT en el foro de Oracle en Foros del Web. Buenas: Como explique en el titulo, necesito hacer una query que inserte el resultado de un select. es decir: insert into tabla destino values( select ...
  #1 (permalink)  
Antiguo 24/06/2009, 09:43
 
Fecha de Ingreso: abril-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
insertar el resultado de un SELECT

Buenas:

Como explique en el titulo, necesito hacer una query que inserte el resultado de un select.

es decir:

insert into tabla destino values(
select campo_1 from tabla tabla_origen
);

El problema es que el SELECT retornara mas de una fila, de echo son N filas(podria ser desde 0 a n), y para empeorar necesito que sean insertadas todas en solo una query, no puedo usar PL/SQL.

es una BD oracle 9.

Espero me puedan dar una mano.
  #2 (permalink)  
Antiguo 24/06/2009, 09:53
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: insertar el resultado de un SELECT

Cita:
Iniciado por RockXellos Ver Mensaje
Buenas:

Como explique en el titulo, necesito hacer una query que inserte el resultado de un select.

es decir:

insert into tabla destino values(
select campo_1 from tabla tabla_origen
);

El problema es que el SELECT retornara mas de una fila, de echo son N filas(podria ser desde 0 a n), y para empeorar necesito que sean insertadas todas en solo una query, no puedo usar PL/SQL.

es una BD oracle 9.

Espero me puedan dar una mano.
No te explicas muy bien.

Si quieres insertar el contenido de una consulta en una tabla, debes tener en cuenta algunas consideraciones.
1. El numero de campos del select sean iguales a los campos de la tabla creada.
2. El tipo de campos de la tabla destino, corresponda al tipo de datos arrojados en el select.

Prueba con esto:
Código sql:
Ver original
  1. INSERT INTO tabla_destino SELECT *FROM tabla_origen;

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 24/06/2009, 10:35
 
Fecha de Ingreso: abril-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: insertar el resultado de un SELECT

GRACIAS por la rapidez...


lo que me indicaste fue eso esto??


"INSERT INTO TABLA_PADRE ( CAMPO1, CAMPO2) VALUES (
SELECT CAMPO1 ,CAMPO2 FROM TABLA_HIJO
);"


Porke de ser asi no funciona... devuelve error ORA-00936: missing expresion:

si pruebo la consulta "SELECT CAMPO1 ,CAMPO2 FROM TABLA_HIJO" retorna los resultados que quiero usar.

pero en conjunto no funcionan.
  #4 (permalink)  
Antiguo 24/06/2009, 10:50
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: insertar el resultado de un SELECT

La sintaxis correcta es:

Código sql:
Ver original
  1. INSERT INTO TABLA_PADRE (CAMPO1, CAMPO2)
  2. SELECT CAMPO1,CAMPO2 FROM TABLA_HIJO;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 24/06/2009, 11:42
 
Fecha de Ingreso: abril-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: insertar el resultado de un SELECT

GRACIAS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !


He estado 3 dias kebrandome la cabeza


GRACIAS!!!!!!!!!!!!!!!!!!!!!!!!!!!


No sabia que se podia hacer eso, es mas hasta pensé (cuando lei la respuesta) que estaba mal escrito....



THKS

Domo Arigato
  #6 (permalink)  
Antiguo 24/06/2009, 12:19
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: insertar el resultado de un SELECT

De nada
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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 00:40.