क्या एक दृश्य में दो तालिकाओं (जिसमें एक ही फ़ील्ड हैं) से डेटा लेना संभव है। असल में, इसलिए दृश्य डेटा को देखता है जैसे कि यह एक टेबल था।दो टेबलों से डेटा एक दृश्य में
उत्तर
हाँ, एक संघ का उपयोग कर -
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 कथन तैयार हैं। कोई प्रदर्शन लाभ नहीं है, और यदि आप किसी अन्य के आधार पर दृश्य बनाते हैं तो प्रदर्शन पर नकारात्मक प्रभाव डाल सकते हैं। इसके अलावा, विचार भंगुर हैं - वे बदल सकते हैं, और यदि समस्याएं हैं तो आपको एक समर्थन दृश्य का उपयोग करने तक पता नहीं चलेगा।
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 बदलता हूं तो कॉलम नाम जोड़ना नहीं चाहता हूं।)
+1: मैं सृजन –
@OMG टट्टू पर कॉलम का उल्लेख करना भूल गया: हाल ही में मुझे यह याद है कि यह मेमोरी बैंकों में ताजा है। –
"अधिमानतः, जॉइन का उपयोग करके" केवल तभी यदि आवश्यकताएं पूरी होती हैं। मुझे एक निहितार्थ नहीं देखा गया कि तालिका 1 और तालिका 2 में पंक्तियां शामिल होने के तरीके से संबंधित थीं। ओपी ने कहा: "जिनके पास एक ही क्षेत्र हैं" इसलिए यदि प्रकार मिलते हैं तो यूनियन काम करेगा। –
@ शैनन सेवरेंस: मुझे तर्क की समीक्षा करने या अतिरिक्त जानकारी देने में हानि दिखाई नहीं दे रही है जो उपयोगी हो सकती है। –
मैं मानता हूं कि इसमें शामिल होने का उल्लेख करना अच्छा था, क्योंकि दो टेबलों को गठबंधन करने के दो तरीके हैं जो परिणामों को अपने आप से अधिक लंबा या व्यापक बनाते हैं। (उस बीटीडब्लू के लिए +1।) मुझे नहीं लगता कि कोई यह सुनिश्चित करने के बिना दूसरे को पसंद कर रहा है कि ओपी क्या करने की कोशिश कर रहा है। –