tablas - vistas con parametros oracle




Acceso a tablas con alias (2)

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
)