कंप्यूटरप्रोग्रामिंग

एक उदाहरण, विस्तृत विवरण, त्रुटि के उपयोग - वाम (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

वाम में शामिल होने के - त्रुटि के विशिष्ट प्रयोग: अवैध प्रक्रिया तालिका

बेसिक बाईं बाहरी पर की गई गलतियों टेबल, दो में शामिल होने:

  1. सही ढंग से तालिकाओं के आदेश जिसके लिए डेटा खो गया था का चयन किया।
  2. कहाँ त्रुटियों जब साथ एक क्वेरी का उपयोग तालिकाओं में शामिल हो।

पहली गलती पर विचार करें। किसी भी समस्या के निर्णय करने से पहले स्पष्ट रूप से क्या हम अंत में प्राप्त करना चाहते हैं कि समझ में आ जाना चाहिए। ऊपर इस उदाहरण में, हम लोगों में से हर एक ले लिया है, लेकिन पूरी तरह से नंबर 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

 

 

 

 

Newest

Copyright © 2018 hi.delachieve.com. Theme powered by WordPress.