oracle - sinonimos - Acceso a tablas con alias
vistas complejas en oracle (3)
Esta pregunta es incorrecta Tuve un gran malentendido acerca de cómo funciona la unión. Estoy leyendo sobre eso ahora.
editar 04.12.2016 Si todavía estás interestelado, puedes ir aquí Seleccionando la columna de la derecha
Tengo algo como esto
with table3 as
(
select t1.c1, t1.c2...
from table1 t1
union all
select t2.c1, t2.c2...
from table2 t2
)select * from table3
Necesito insertar todas las filas desde arriba en otra tabla
insert into table4 t4
(
t4.c1, t4.c2...
)
select t3.c1, t3.c2...
from table3 t3
Mi pregunta es, ¿funcionará esta inserción? Tengo clums en la tabla 1 y 2 con el mismo nombre, ¿tendré que hacer referencia a ellos de alguna manera diferente?
¿Debo escribir de esta manera?
insert into table4 t4
(
t4.c1, t4.c2...
)
select t3.t1.c1, t3.t1.c2, t3.t2.c1...
from table3 t3
No se necesita alias
si la coincidencia de columna puede simplemente usar insertar seleccionar
insert into table4
( select t1.c1, t1.c2...
from table1 t1
union all
select t2.c1, t2.c2...
from table2 t2)
de lo contrario, debe declarar el nombre de la columna
insert insert into table4(c1, c2... )
( select t1.c1, t1.c2...
from table1 t1
union all
select t2.c1, t2.c2...
from table2 t2)
Suponiendo que necesita usar ese UNION ALL
, en lugar de instrucciones individuales de inserción como selección para insertar en otra tabla, puede intentar usar alias diferentes para columnas de diferentes tablas:
with table1 as
(
select t2.name as t2_name,
t2.address as t2_address,
t2.age as t2_age,
null as t3_name,
null as t3_address,
null as t3_age,
from table2 t2
union all
select null,
null,
null,
t3.name,
t3.address,
t3.age
from table3 t3
)
with
es parte de una declaración select
. Puede insert
resultado de select
y puede usar with
en esta select
. Tal vez la sintaxis no es la más intuitiva, pero debería funcionar:
insert into table4
with table3 as
(
select t1.c1, t1.c2...
from table1 t1
union all
select t2.c1, t2.c2...
from table2 t2
) select * from table3;
Y no, no necesitas (incluso no puedes) usar alias dobles.