2010-07-16 20 views

उत्तर

19

हाँ, एक संघ का उपयोग कर -

CREATE VIEW vw_combined AS 
    SELECT * FROM TABLE1 
    UNION ALL 
    SELECT * FROM TABLE2 

... आवश्यकता है स्तंभों की एक ही नंबर है, और हर स्थिति में डेटा प्रकार मैच हो कि।

..preferrably, एक में शामिल हों का उपयोग कर:

CREATE VIEW vw_combined AS 
    SELECT * 
    FROM TABLE1 t1 
    JOIN TABLE2 t2 ON t2.col = t1.col 

लेकिन मैं विचारों के आधार पर के खिलाफ चेतावनी देने के लिए चाहते हैं - अगर materialized नहीं है, वे केवल SQL कथन तैयार हैं। कोई प्रदर्शन लाभ नहीं है, और यदि आप किसी अन्य के आधार पर दृश्य बनाते हैं तो प्रदर्शन पर नकारात्मक प्रभाव डाल सकते हैं। इसके अलावा, विचार भंगुर हैं - वे बदल सकते हैं, और यदि समस्याएं हैं तो आपको एक समर्थन दृश्य का उपयोग करने तक पता नहीं चलेगा।

+3

"अधिमानतः, जॉइन का उपयोग करके" केवल तभी यदि आवश्यकताएं पूरी होती हैं। मुझे एक निहितार्थ नहीं देखा गया कि तालिका 1 और तालिका 2 में पंक्तियां शामिल होने के तरीके से संबंधित थीं। ओपी ने कहा: "जिनके पास एक ही क्षेत्र हैं" इसलिए यदि प्रकार मिलते हैं तो यूनियन काम करेगा। –

+1

@ शैनन सेवरेंस: मुझे तर्क की समीक्षा करने या अतिरिक्त जानकारी देने में हानि दिखाई नहीं दे रही है जो उपयोगी हो सकती है। –

+4

मैं मानता हूं कि इसमें शामिल होने का उल्लेख करना अच्छा था, क्योंकि दो टेबलों को गठबंधन करने के दो तरीके हैं जो परिणामों को अपने आप से अधिक लंबा या व्यापक बनाते हैं। (उस बीटीडब्लू के लिए +1।) मुझे नहीं लगता कि कोई यह सुनिश्चित करने के बिना दूसरे को पसंद कर रहा है कि ओपी क्या करने की कोशिश कर रहा है। –

1
create or replace view view_name as 
select * from table_1 
union all select * from table_2 

नोट: दृश्य में कॉलम समय दृश्य निर्मित हो जाने पर सेट कर रहे हैं। निर्माण के बाद तालिका_1 और table_2 में कॉलम जोड़ना view_name में दिखाई नहीं देगा। नए कॉलम दिखाने के लिए आपको उपर्युक्त डीडीएल को फिर से चलाने की आवश्यकता होगी।

आप पंक्तियों नकल चाहते हैं एकल पंक्तियों (लेकिन सर्वर के लिए संभावित रूप से अधिक काम) के लिए collasped जा करने के लिए:

create or replace view view_name as 
select * from table_1 
union select * from table_2 

आम तौर पर यह बुरा प्रपत्र का चयन करें सूची में * उपयोग करने के लिए है, लेकिन यह सोचते हैं कि प्रश्नों दृश्य का उपयोग करने के लिए उन्हें केवल वही चुनने जा रहे हैं, जिन्हें मैं सभी स्तंभों का स्पष्ट रूप से नाम देने के बजाय यहां उपयोग करूंगा। (विशेष रूप से जब मैं तालिका_1 और तालिका_2 बदलता हूं तो कॉलम नाम जोड़ना नहीं चाहता हूं।)

+0

+1: मैं सृजन –

+0

@OMG टट्टू पर कॉलम का उल्लेख करना भूल गया: हाल ही में मुझे यह याद है कि यह मेमोरी बैंकों में ताजा है। –

संबंधित मुद्दे