कंप्यूटर, प्रोग्रामिंग
एक उदाहरण, विस्तृत विवरण, त्रुटि के उपयोग - वाम (SQL) में शामिल होने के
किसी भी वास्तविक संबंधपरक डेटाबेस में, सभी सूचनाओं को अलग-अलग तालिकाओं पर वितरित किया जाता है। कई तालिकाओं ने एक दूसरे के साथ सर्किट में संबंध स्थापित किए हैं हालांकि, एसक्यूएल प्रश्नों का उपयोग करते हुए , स्कीमा में निहित डेटा के बीच संबंध बनाने में काफी संभव है। यह एक जुड़ने में शामिल होने के ऑपरेशन के द्वारा किया जाता है, जो आपको किसी भी संख्या के तालिकाओं के बीच संबंध बनाने और यहां तक कि प्रतीत होता है कि असमान डेटा कनेक्ट करने की अनुमति देता है।
इस लेख में हम बाएं बाहरी कनेक्शन के बारे में विशेष रूप से बात करेंगे। इससे पहले कि हम इस प्रकार के कनेक्शन का वर्णन करना शुरू करें, हम डेटाबेस में कुछ टेबल जोड़ते हैं।
आवश्यक तालिकाओं की तैयारी
उदाहरण के लिए, हमारे डेटाबेस में लोगों और उनके रियल एस्टेट के बारे में जानकारी है मूल सूचना तीन तालिकाओं पर आधारित है: पीपुल्स (लोक), रियल्टी (रियल एस्टेट), रियल्टी_पसल्स (रिलेशंस के साथ तालिका, जिसे रियल एस्टेट संबंधित हैं) मान लीजिए, टेबल में, लोगों के लिए निम्न डेटा संग्रहीत हैं:
पीपुल्स | ||||
आईडी | L_NAME | F_name | Middle_name | जन्मदिन |
1 | इवानोवा | दारिया | बी | 2000/07/16 |
2 | पुगिन | व्लादिस्लाव | Nikolaevich | 1986/01/29 |
3 | Evgenin | सिकंदर | Federovich | 1964/04/30 |
4 | अनीना | प्यार | पी | 31.12.1989 |
5 | Gerasimovsky | आशा | पी | 1992/03/14 |
6 | Gerasimovsky | ओलेग | Albertovich | 1985/01/29 |
7 | Sukhanovskaya | जूरी | ए | 1976/09/25 |
8 | Sukhanovskaya | जूलिया | वाई | 2001/01/10 |
रियल एस्टेट:
अचल संपत्ति | |
आईडी | पता |
1 | अर्खांगेलस्क, सेंट वोरोनिना, 7, एपी 6 |
2 | अर्खांगेलस्क, सेंट सेवरोदविन्स्काया, 84, एपटाल 9, कमरे 5 |
3 | अर्खांगेलस्क क्षेत्र, सेवरोदविंस्क, उल लेनिना, डी। 134, उपयुक्त। 85 |
4 | अरखांगेल्स्क क्षेत्र, नोवोडविंस्क, उल Proletarskaya, 16, Apt 137 |
5 | अरखांगेलस्क, पीएल तेरेखिन, डी। 89, एपटील 13 |
रिश्तों के लिए, लोग अचल संपत्ति हैं:
Realty_peoples | ||
id_peoples | id_realty | टाइप |
7 | 3 | आम संयुक्त स्वामित्व |
8 | 3 | आम संयुक्त स्वामित्व |
3 | 5 | संपत्ति |
7 | 1 | संपत्ति |
5 | 4 | साझा स्वामित्व |
6 | 4 | साझा स्वामित्व |
वाम जोड़ (एसक्यूएल) - वर्णन
बाएं कनेक्शन में निम्न वाक्य रचना है:
Table_A LEFT JOIN table_B [{ predicate } पर | { कॉलम से उपयोग की जाने वाली सूची }] |
और यह इस तरह दिखता है:
और इस अभिव्यक्ति को "बिना किसी अपवाद के तालिका ए से सभी पंक्तियों के रूप में अनुवादित किया गया है, और केवल बीबी से परिभाषित होने वाले आउटपुट की लाइनें यदि तालिका बी में तालिका ए की पंक्तियों के लिए कोई जोड़ी नहीं थी, तो परिणाम के साथ नल कॉलम भरें "।
सबसे अधिक बार, जब बाएं कनेक्शन का प्रदर्शन होता है, ON निर्दिष्ट होता है, USING का उपयोग तभी होता है जब कॉलम नाम जिनके लिए कनेक्शन शेड्यूल किया गया है, समान हैं।
वाम जोड़ - उपयोग के उदाहरण
बाएं कनेक्शन की मदद से, हम देख सकते हैं कि पीपल्स की सूची में सभी लोगों के पास अचल संपत्ति है। ऐसा करने के लिए, बाईं ओर एसक्यूएल में निम्न उदाहरण निष्पादित करें:
चुनिंदा पीपुल्स। *, रियल्टी_ लोक। आईडी_रेल्टी, रियल्टी_पैसे.प्रकार पीपुल्स पर पीपुल्स लेफ्ट जॉइन रियल्टी_पीसल्स से लोग। आईडी = रियल्टी_ लोक लोग.आईडी_ लोक; |
और हमें निम्न परिणाम मिलता है:
QUERY1 | ||||||
आईडी | L_NAME | F_name | Middle_name | जन्मदिन | id_realty | टाइप |
1 | इवानोवा | दारिया | बी | 2000/07/16 | ||
2 | पुगिन | व्लादिस्लाव | Nikolaevich | 1986/01/29 | ||
3 | Evgenin | सिकंदर | Federovich | 1964/04/30 | 5 | संपत्ति |
4 | अनीना | प्यार | पी | 31.12.1989 | ||
5 | Gerasimovsky | आशा | पी | 1992/03/14 | 4 | साझा स्वामित्व |
6 | Gerasimovsky | ओलेग | Albertovich | 1985/01/29 | 4 | साझा स्वामित्व |
7 | Sukhanovskaya | जूरी | ए | 1976/09/25 | 1 | संपत्ति |
7 | Sukhanovskaya | जूरी | ए | 1976/09/25 | 3 | आम संयुक्त स्वामित्व |
8 | Sukhanovskaya | जूलिया | वाई | 2001/01/10 | 3 | आम संयुक्त स्वामित्व |
जैसा कि आप देख सकते हैं, इवानोवा दरिया, पगिन व्लादिस्लाव और एनाना ल्यूबोव के पास अचल संपत्ति के लिए कोई पंजीकृत अधिकार नहीं है।
और अंदरूनी इनर से जुड़ने का हम क्या उपयोग करेंगे? जैसा कि आप जानते हैं, इसमें बेमेल लाइनों को शामिल नहीं किया गया है, इसलिए हमारे अंतिम नमूना से तीन लोग बस गिर जाएंगे:
QUERY1 | ||||||
आईडी | L_NAME | F_name | Middle_name | जन्मदिन | id_realty | टाइप |
3 | Evgenin | सिकंदर | Federovich | 1964/04/30 | 5 | संपत्ति |
5 | Gerasimovsky | आशा | पी | 1992/03/14 | 4 | साझा स्वामित्व |
6 | Gerasimovsky | ओलेग | Albertovich | 1985/01/29 | 4 | साझा स्वामित्व |
7 | Sukhanovskaya | जूरी | ए | 1976/09/25 | 1 | संपत्ति |
7 | Sukhanovskaya | जूरी | ए | 1976/09/25 | 3 | आम संयुक्त स्वामित्व |
8 | Sukhanovskaya | जूलिया | वाई | 2001/01/10 | 3 | आम संयुक्त स्वामित्व |
ऐसा प्रतीत होता है कि दूसरा विकल्प हमारे कार्य की शर्तों को भी पूरा करता है। हालांकि, अगर हम अधिक से अधिक तालिकाओं को जोड़ना जारी रखते हैं, तो परिणाम से तीन लोग बिना किसी समय तक चले गए होंगे इसलिए, व्यवहार में, कई तालिकाओं का संयोजन करते समय, बाएं और दाएं कनेक्शन इनर से जुड़ने से अधिक बार उपयोग किए जाते हैं।
हम छोड़ने वाले एसक्यूएल के साथ उदाहरणों पर विचार करना जारी रखते हैं। हमारी रियल एस्टेट के पते के साथ तालिका में शामिल हों:
चुनिंदा पीपल्स। *, रियल्टी_ लोक। आईडी_रेल्टी, रियल्टी_पैसे। टाइप, रियल्टी.एड्रेस पीपुल्स से पीपुल्स.आईडी = रियल्टी_ पीपल्स.आईडी_ लोक रियल्टी पर रिएक्ट को छोड़ दें। Realty_peoples.id_realty |
अब हम न केवल अधिकार का रूप प्राप्त करते हैं, बल्कि अचल संपत्ति के पते भी प्राप्त करते हैं:
QUERY1 | |||||||
आईडी | L_NAME | F_name | Middle_name | जन्मदिन | id_realty | टाइप | पता |
1 | इवानोवा | दारिया | बी | 2000/07/16 | |||
2 | पुगिन | व्लादिस्लाव | Nikolaevich | 1986/01/29 | |||
3 | Evgenin | सिकंदर | Federovich | 1964/04/30 | 5 | संपत्ति | अरखांगेलस्क, पीएल तेरेखिन, डी। 89, एपटील 13 |
4 | अनीना | प्यार | पी | 31.12.1989 | |||
5 | Gerasimovsky | आशा | पी | 1992/03/14 | 4 | साझा स्वामित्व | अरखांगेल्स्क क्षेत्र, नोवोडविंस्क, उल Proletarskaya, 16, Apt 137 |
6 | Gerasimovsky | ओलेग | Albertovich | 1985/01/29 | 4 | साझा स्वामित्व | अरखांगेल्स्क क्षेत्र, नोवोडविंस्क, उल Proletarskaya, 16, Apt 137 |
7 | Sukhanovskaya | जूरी | ए | 1976/09/25 | 3 | आम संयुक्त स्वामित्व | अर्खांगेलस्क क्षेत्र, सेवरोदविंस्क, उल लेनिना, डी। 134, उपयुक्त। 85 |
7 | Sukhanovskaya | जूरी | ए | 1976/09/25 | 1 | संपत्ति | अर्खांगेलस्क, सेंट वोरोनिना, 7, एपी 6 |
8 | Sukhanovskaya | जूलिया | वाई | 2001/01/10 | 3 | आम संयुक्त स्वामित्व |
आर्कान्जेस्क क्षेत्र, सेवेरॉद्वीन्स्क, सेंट। लेनिन, डी। 134, क्ष। 85 |
वाम में शामिल होने के - त्रुटि के विशिष्ट प्रयोग: अवैध प्रक्रिया तालिका
बेसिक बाईं बाहरी पर की गई गलतियों टेबल, दो में शामिल होने:
- सही ढंग से तालिकाओं के आदेश जिसके लिए डेटा खो गया था का चयन किया।
- कहाँ त्रुटियों जब साथ एक क्वेरी का उपयोग तालिकाओं में शामिल हो।
पहली गलती पर विचार करें। किसी भी समस्या के निर्णय करने से पहले स्पष्ट रूप से क्या हम अंत में प्राप्त करना चाहते हैं कि समझ में आ जाना चाहिए। ऊपर इस उदाहरण में, हम लोगों में से हर एक ले लिया है, लेकिन पूरी तरह से नंबर 2, जिसके मालिक नहीं मिला था के तहत वस्तु के बारे में जानकारी खो दिया है।
अगर हम कुछ स्थानों में एक प्रश्न में टेबल चले गए, और साथ शुरू होगा «... रियल्टी बाएं से पीपुल्स में शामिल होने के ...» किसी भी एक संपत्ति है, हम खो दिया है नहीं होगा, तो आप लोगों के बारे में नहीं कहेंगे।
लेकिन बाईं कनेक्शन से भयभीत नहीं होना, पूर्ण बाहरी है, जो परिणाम और मिलान, और नहीं मिलान लाइनों में शामिल किया गया है करने के लिए स्विच कर सकता।
सब के बाद, नमूने की मात्रा अक्सर बहुत बड़ा है, और अतिरिक्त डेटा वास्तव में बेकार है। या उनके उपलब्ध संपत्ति की एक सूची अपने मालिक के साथ सारी संपत्ति सूची (यदि हो तो) के साथ सभी लोगों की: - मुख्य बात यह पता लगाने की क्या आप एक परिणाम प्राप्त करना चाहते हैं।
वाम में शामिल होने के - त्रुटि के विशिष्ट प्रयोग: अनुरोध सही जब कहाँ में स्थिति की स्थापना है
दूसरा त्रुटि भी डेटा की हानि के साथ जुड़े हैं, और हमेशा तुरंत स्पष्ट नहीं कर रहे हैं है।
जब हम के माध्यम से कनेक्शन सभी लोगों और उनके मौजूदा प्रॉपर्टी के लिए डेटा प्राप्त छोड़ के प्रश्न पर वापस चलते हैं। निम्नलिखित याद के साथ छोड़ दिया एसक्यूएल उदाहरण में शामिल होने:
से पीपुल्स बायाँ शामिल हों Realty_peoples पर Peoples.id = Realty_peoples.id_peoples; |
मान लीजिए कि हमारे अनुरोध को स्पष्ट करना चाहते हैं और नहीं आउटपुट डेटा, करता है, जहां कानून के प्रकार - "संपत्ति"। अगर हम बस संलग्न, बाएँ का उपयोग एसक्यूएल, निम्न स्थिति का एक उदाहरण में शामिल होने:
...
कहाँ प्रकार <> "संपत्ति" |
हम लोग हैं, जो कोई संपत्ति है, क्योंकि शून्य मान अशक्त इस प्रकार की तुलना नहीं की है पर डेटा खो देंगे:
QUERY1 | ||||||
आईडी | L_NAME | F_name | Middle_name | जन्मदिन | id_realty | टाइप |
5 | Gerasimovsky | आशा | पी | 1992/03/14 | 4 | आम भागों |
6 | Gerasimovsky | ओलेग | Albertovich | 1985/01/29 | 4 | आम भागों |
7 | Sukhanovskaya | जूरी | ए | 1976/09/25 | 3 | कुल संयुक्त स्वामित्व |
8 | Sukhanovskaya | जूलिया | वाई | 2001/01/10 | 3 | कुल संयुक्त स्वामित्व |
इस कारण के लिए होने से त्रुटियों को रोकने के लिए, यह कनेक्शन के तुरंत बाद ही चयन शर्त निर्धारित करने के लिए सबसे अच्छा है। हम एसक्यूएल उदाहरण में शामिल होने के लिए छोड़ दिया साथ निम्नलिखित पर विचार करने के लिए सुझाव।
चयन पीपुल्स। *, Realty_peoples.id_realty, Realty_peoples.type लोगों से बायाँ शामिल हों Realty_peoples पर (Peoples.id = Realty_peoples.id_peoples और प्रकार <> "संपत्ति") |
परिणाम इस प्रकार होगी:
QUERY1 | ||||||
आईडी | L_NAME | F_name | Middle_name | जन्मदिन | id_realty | टाइप |
1 | इवानोवा | दारिया | बी | 2000/07/16 | ||
2 | पुगिन | व्लादिस्लाव | Nikolaevich | 1986/01/29 | ||
3 | Evgenin | सिकंदर | Federovich | 1964/04/30 | ||
4 | अनीना | प्यार | पी | 31.12.1989 | ||
5 | Gerasimovsky | आशा | पी | 1992/03/14 | 4 | आम भागों |
6 | Gerasimovsky | ओलेग | Albertovich | 1985/01/29 | 4 | आम भागों |
7 | Sukhanovskaya | जूरी | ए | 1976/09/25 | 3 | कुल संयुक्त स्वामित्व |
8 | Sukhanovskaya | जूलिया | वाई | 2001/01/10 | 3 | कुल संयुक्त स्वामित्व |
इस प्रकार, बाईं ओर सरल का पालन करके एसक्यूएल उदाहरण में शामिल होने के लिए, हम सभी लोगों की एक सूची प्राप्त किया, आगे बढ़ रहा है, एक इक्विटी / संयुक्त स्वामित्व में इन गुणों में से एक।
एक निष्कर्ष के रूप में मैं एक बार फिर से डेटाबेस से कोई भी जानकारी का एक नमूना जिम्मेदारी से लिया जाना चाहिए कि जोर देना चाहते हैं। बाईं साथ हमारे सामने खोला कई बारीकियों एसक्यूएल सरल उदाहरण में शामिल होने, स्पष्टीकरण जो एक की - इससे पहले कि आप भी बुनियादी क्वेरी लिखना शुरू, आप ध्यान से समझने के लिए होगा कि हम अंत में प्राप्त करना चाहते हैं। गुड लक!
Similar articles
Trending Now