Insert/select
hola,
tengo que cargar una tabla con la sentencia insert/select en la cual
la primera columna es una column_id(numérico secuencial) ¿existe
alguna función simple que me permita rellenar esta columna cuando hago
la select sin tener que crear una secuencia en la base de datos?
muchas gracias,
danny
tengo que cargar una tabla con la sentencia insert/select en la cual
la primera columna es una column_id(numérico secuencial) ¿existe
alguna función simple que me permita rellenar esta columna cuando hago
la select sin tener que crear una secuencia en la base de datos?
muchas gracias,
danny
Lo he intentado pero la select devuelve más de una fila.
Te envio el esquema de select para que la eches un vistazo:
insert into tabla4
select MAX(dd.colum_id)+1,
tabla1.colum_b,
tabla2.column_c,
tabla2.column_d
from tabla1,
tabla2,
tabla3,
tabla4
where tabla1.column_p=tabla3.column_p
and tabla3.column_q=tabla2.column_q
and tabla1.column_r=tabla4.column_r
group by tabla1.colum_b, tabla2.column_c,tabla3.column_d;
Muchas gracias,
danny
Te envio el esquema de select para que la eches un vistazo:
insert into tabla4
select MAX(dd.colum_id)+1,
tabla1.colum_b,
tabla2.column_c,
tabla2.column_d
from tabla1,
tabla2,
tabla3,
tabla4
where tabla1.column_p=tabla3.column_p
and tabla3.column_q=tabla2.column_q
and tabla1.column_r=tabla4.column_r
group by tabla1.colum_b, tabla2.column_c,tabla3.column_d;
Muchas gracias,
danny
Es un poco rudimentario, pero si no quieres utilizar secuencias, aqui tienes lo que puedes hacer
insert into tabla4
select (select MAX(dd.colum_id)+1 from tabla1),
tabla1.colum_b,
tabla2.column_c,
tabla2.column_d
from tabla1,
tabla2,
tabla3,
tabla4
where tabla1.column_p=tabla3.column_p
and tabla3.column_q=tabla2.column_q
and tabla1.column_r=tabla4.column_r
ya me diras si te vale.
insert into tabla4
select (select MAX(dd.colum_id)+1 from tabla1),
tabla1.colum_b,
tabla2.column_c,
tabla2.column_d
from tabla1,
tabla2,
tabla3,
tabla4
where tabla1.column_p=tabla3.column_p
and tabla3.column_q=tabla2.column_q
and tabla1.column_r=tabla4.column_r
ya me diras si te vale.
Me temo que no me va a servir porque la columna que necesito que sea secuencial es la que rellena el max(column_id), y la select devuelve el mismo valor en todos los registros
Te sirve esto
insert into tabla4 as
select
ROWNUM secuencia,
tabla1.colum_b,
tabla2.column_c,
tabla2.column_d
from tabla1,
tabla2,
tabla3,
tabla4
where tabla1.column_p=tabla3.column_p
and tabla3.column_q=tabla2.column_q
and tabla1.column_r=tabla4.column_r
insert into tabla4 as
select
ROWNUM secuencia,
tabla1.colum_b,
tabla2.column_c,
tabla2.column_d
from tabla1,
tabla2,
tabla3,
tabla4
where tabla1.column_p=tabla3.column_p
and tabla3.column_q=tabla2.column_q
and tabla1.column_r=tabla4.column_r
Mil disculpas nuevamente, por error cometido en la respuesta, incluso me equivoque en la sentencia, estuve ejecutando pruebas con un create table as select y al pasarlo al post lo hice mal. En otras palabras la sentencia que puse no sirve.
Se me ocurre que para lo que quieres hacer crees una vista a partir del select que presentas, y que posteriormente realices el insert a partir de la vista, en este caso si podrás utilizar el rownum.
Se me ocurre que para lo que quieres hacer crees una vista a partir del select que presentas, y que posteriormente realices el insert a partir de la vista, en este caso si podrás utilizar el rownum.
Ok, prueba esto entonces,
insert into tabla4
select (select MAX(dd.colum_id) from tabla1) +ROWNUM,
tabla1.colum_b,
tabla2.column_c,
tabla2.column_d
from tabla1,
tabla2,
tabla3,
tabla4
where tabla1.column_p=tabla3.column_p
and tabla3.column_q=tabla2.column_q
and tabla1.column_r=tabla4.column_r
¿Esta si?
insert into tabla4
select (select MAX(dd.colum_id) from tabla1) +ROWNUM,
tabla1.colum_b,
tabla2.column_c,
tabla2.column_d
from tabla1,
tabla2,
tabla3,
tabla4
where tabla1.column_p=tabla3.column_p
and tabla3.column_q=tabla2.column_q
and tabla1.column_r=tabla4.column_r
¿Esta si?
Lo he intentado pero la select devuelve más de una fila.
Te envio el esquema de select para que la eches un vistazo:
insert into tabla4
select MAX(dd.colum_id)+1,
tabla1.colum_b,
tabla2.column_c,
tabla2.column_d
from tabla1,
tabla2,
tabla3,
tabla4
where tabla1.column_p=tabla3.column_p
and tabla3.column_q=tabla2.column_q
and tabla1.column_r=tabla4.column_r
group by tabla1.colum_b, tabla2.column_c,tabla3.column_d;
Muchas gracias,
danny
Te envio el esquema de select para que la eches un vistazo:
insert into tabla4
select MAX(dd.colum_id)+1,
tabla1.colum_b,
tabla2.column_c,
tabla2.column_d
from tabla1,
tabla2,
tabla3,
tabla4
where tabla1.column_p=tabla3.column_p
and tabla3.column_q=tabla2.column_q
and tabla1.column_r=tabla4.column_r
group by tabla1.colum_b, tabla2.column_c,tabla3.column_d;
Muchas gracias,
danny