oracle - एलायज्ड टेबल एक्सेस करना




select insert (2)

कोई उपनाम की आवश्यकता नहीं है

यदि कॉलम मैच में आप बस डालें चयन का उपयोग कर सकते हैं

insert into table4 
( select t1.c1, t1.c2...
  from table1 t1
  union all
  select t2.c1, t2.c2...
  from table2 t2) 

अन्यथा आपको स्तंभ नाम घोषित करना चाहिए

insert insert into table4(c1, c2... )
( select t1.c1, t1.c2...
  from table1 t1
  union all
  select t2.c1, t2.c2...
  from table2 t2) 

यह प्रश्न गलत है मैं कैसे काम करता है यूनियन के बारे में कुछ बहुत बड़ी गलतफहमी थी मैं इसके बारे में अब पढ़ रहा हूं।

संपादित करें 04.12.2016 यदि आप अभी भी इंटरस्टेड हैं, तो आप यहां जा सकते हैं सही कॉलम का चयन

मेरे पास ऐसा कुछ है

with table3 as
(
  select t1.c1, t1.c2...
  from table1 t1
  union all
  select t2.c1, t2.c2...
  from table2 t2
)select * from table3

मुझे दूसरे तालिका में ऊपर से सभी पंक्तियों को सम्मिलित करने की आवश्यकता है I

insert into table4 t4
(
  t4.c1, t4.c2...
)
select t3.c1, t3.c2...
from table3 t3 

मेरा सवाल है, क्या यह सम्मिलित काम करेगा? मेरे पास टेबल 1 और 2 में क्लाउड के नाम हैं, मुझे उन्हें किसी तरह अलग तरीके से संदर्भित करने की आवश्यकता होगी?

क्या मुझे इसे इस तरह लिखना है?

insert into table4 t4
    (
      t4.c1, t4.c2...
    )
    select t3.t1.c1, t3.t1.c2, t3.t2.c1...
    from table3 t3 

यह मानते हुए कि आप किसी अन्य तालिका में सम्मिलित करने के लिए एकल डालें-जैसे-चयन बयान के बजाय उस UNION ALL उपयोग करने की आवश्यकता है, आप विभिन्न तालिकाओं से कॉलम के लिए विभिन्न उपनामों का उपयोग करने की कोशिश कर सकते हैं:

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
)