विज्ञापन

Microsoft Access पूरे Microsoft Office सुइट में यकीनन सबसे शक्तिशाली उपकरण है, फिर भी यह ऑफिस पावर उपयोगकर्ताओं को (और कभी-कभी डराता है) रहस्यमय बनाता है। वर्ड या एक्सेल की तुलना में एक स्टेटर सीखने की अवस्था के साथ, किसी को इस उपकरण के उपयोग के आसपास अपने सिर को कैसे लपेटना है? इस सप्ताह, ब्रूस एपर हमारे पाठकों में से एक इस सवाल से जुड़े कुछ मुद्दों पर गौर करेगा।

एक पाठक पूछता है:

मुझे Microsoft Access में क्वेरी लिखने में समस्या हो रही है।

मुझे दो उत्पाद तालिकाओं वाला एक डेटाबेस मिला है जिसमें एक संख्यात्मक उत्पाद कोड और संबंधित उत्पाद नाम के साथ एक सामान्य कॉलम है।

मैं यह पता लगाना चाहता हूं कि टेबल ए से कौन से उत्पाद टेबल बी में मिल सकते हैं। मैं परिणाम नाम का एक स्तंभ जोड़ना चाहता हूं जिसमें यदि मौजूद है तो तालिका ए से उत्पाद का नाम शामिल है, और तालिका ए में उत्पाद का नाम तालिका ए में मौजूद नहीं है।

क्या आपका कोई सुझाव है?

ब्रूस का जवाब:

Microsoft Access एक डेटाबेस मैनेजमेंट सिस्टम (DBMS) है जिसे विंडोज और मैक दोनों मशीनों पर उपयोग के लिए डिज़ाइन किया गया है। यह डेटा प्रोसेसिंग और स्टोरेज के लिए Microsoft के जेट डेटाबेस इंजन का उपयोग करता है। यह उपयोगकर्ताओं के लिए एक ग्राफिकल इंटरफ़ेस भी प्रदान करता है जो लगभग संरचित क्वेरी भाषा (एसक्यूएल) को समझने की आवश्यकता को समाप्त करता है।

एसक्यूएल वह कमांड भाषा है जिसका उपयोग संग्रहित जानकारी को जोड़ने, हटाने, अद्यतन करने और वापस करने के लिए किया जाता है डेटाबेस के साथ-साथ कोर डेटाबेस घटकों को जोड़ना, जोड़ना, हटाना या संशोधित करना या संशोधित करना सूचकांक।

प्रस्थान बिंदू

यदि आपके पास पहले से ही एक्सेस या किसी अन्य RDBMS के साथ कुछ परिचित नहीं हैं, तो मैं आपको सुझाव दूंगा कि आगे बढ़ने से पहले इन संसाधनों के साथ शुरू करें:

  • तो एक डेटाबेस क्या है? तो क्या डेटाबेस है, वैसे भी? [MakeUseOf बताते हैं]एक प्रोग्रामर या एक प्रौद्योगिकी उत्साही के लिए, एक डेटाबेस की अवधारणा कुछ ऐसी है जो वास्तव में दी जा सकती है। हालांकि, कई लोगों के लिए एक डेटाबेस की अवधारणा ही एक विदेशी है ... अधिक पढ़ें जहां रयान दूबे रिलेशनल डेटाबेस की मूल बातें दिखाने के लिए एक्सेल का उपयोग करता है।
  • Microsoft Access 2007 के साथ आरंभ करने के लिए एक त्वरित मार्गदर्शिका Microsoft Access 2007 के साथ आरंभ करने के लिए एक त्वरित मार्गदर्शिका अधिक पढ़ें जो एक्सेस का एक उच्च-स्तरीय अवलोकन और एक्सेस डेटाबेस शामिल करने वाले घटक हैं।
  • माइक्रोसॉफ्ट एक्सेस 2007 में टेबल्स के लिए एक त्वरित ट्यूटोरियल माइक्रोसॉफ्ट एक्सेस 2007 में टेबल्स के लिए एक त्वरित ट्यूटोरियल अधिक पढ़ें अपने संरचित डेटा को संग्रहीत करने के लिए अपने पहले डेटाबेस और तालिकाओं को बनाने पर एक नज़र डालें।
  • Microsoft Access 2007 में क्वेरीज़ पर एक त्वरित ट्यूटोरियल Microsoft Access 2007 में क्वेरीज़ पर एक त्वरित ट्यूटोरियल अधिक पढ़ें डेटाबेस तालिकाओं में संग्रहीत डेटा के विशिष्ट भागों को वापस करने के साधनों को देखता है।

इन लेखों में प्रदान की गई अवधारणाओं की बुनियादी समझ होने से निम्नलिखित को पचाने में थोड़ा आसान हो जाएगा।

डेटाबेस संबंध और सामान्यीकरण

कल्पना कीजिए कि आप पूरी दुनिया में 50 विभिन्न प्रकार के विगेट्स बेचने वाली कंपनी चला रहे हैं। आपके पास 1,250 का क्लाइंट बेस है और औसतन महीने में इन क्लाइंट्स को 10,000 विजेट बेचते हैं। आप वर्तमान में इन सभी बिक्री पर नज़र रखने के लिए एक एकल स्प्रेडशीट का उपयोग कर रहे हैं - प्रभावी रूप से एक एकल डेटाबेस तालिका। और हर साल आपकी स्प्रैडशीट में हजारों पंक्तियाँ जोड़ते हैं।

फ्लैट तालिका -1फ्लैट तालिका -2

उपरोक्त चित्र आपके द्वारा उपयोग किए जा रहे ऑर्डर ट्रैकिंग स्प्रेडशीट का हिस्सा हैं। अब कहते हैं कि ये दोनों ग्राहक साल में कई बार आपसे विजेट खरीदते हैं, इसलिए आपके पास इन दोनों के लिए कहीं अधिक पंक्तियाँ हैं।

अगर जोन स्मिथ टेड बैनेस से शादी करते हैं और अपना उपनाम लेते हैं, तो हर एक पंक्ति जिसमें उनका नाम होता है उसे अब बदलना होगा। यदि आपको ’जोन स्मिथ’ नाम के दो अलग-अलग ग्राहक हैं, तो समस्या को कंपाउंड किया जाता है। यह काफी सामान्य घटना के कारण अपने बिक्री डेटा को लगातार बनाए रखने के लिए बहुत कठिन हो गया है।

एक डेटाबेस का उपयोग करके और डेटा को सामान्य करके, हम आइटम को कई तालिकाओं जैसे इन्वेंट्री, क्लाइंट और ऑर्डर में अलग कर सकते हैं।

मानकीकरण

बस हमारे उदाहरण के ग्राहक भाग को देखते हुए, हम क्लाइंट नाम और क्लाइंट पते के लिए कॉलम हटा देंगे और उन्हें एक नई तालिका में डाल देंगे। ऊपर की छवि में, मैंने डेटा के अधिक दानेदार उपयोग के लिए चीजों को बेहतर तरीके से तोड़ दिया है। नई तालिका में प्राथमिक कुंजी (ClientID) के लिए एक कॉलम भी है - एक संख्या जो इस तालिका में प्रत्येक पंक्ति तक पहुंचने के लिए उपयोग की जाएगी।

मूल तालिका में जहां हमने इस डेटा को हटा दिया है, हम एक फॉरेन की (क्लाइंटआईडी) के लिए एक कॉलम जोड़ेंगे, जो इस विशेष क्लाइंट की जानकारी वाली उचित पंक्ति के लिए लिंक है।

अब, जब Joan Smith ने अपना नाम Joan Baines में बदल दिया, तो परिवर्तन केवल क्लाइंट तालिका में एक बार किए जाने की आवश्यकता है। शामिल तालिकाओं से हर दूसरे संदर्भ में उचित ग्राहक नाम और एक रिपोर्ट होगी जो यह देख रही है कि जोआन ने क्या खरीदा है पिछले 5 वर्षों में उसके मायके और विवाहित नामों के तहत सभी आदेश मिल जाएंगे बिना रिपोर्ट बदले कि कैसे हो सकता है उत्पन्न।

अतिरिक्त लाभ के रूप में, यह खपत की गई कुल मात्रा को भी कम करता है।

प्रकार में शामिल हों

SQL पांच अलग-अलग प्रकार के जॉइन को परिभाषित करता है: INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER, और CROSS। SQL स्टेटमेंट में OUTER कीवर्ड वैकल्पिक है।

Microsoft Access INNER (डिफ़ॉल्ट), LEFT OUTER, RIGHT OUTER और CROSS के उपयोग की अनुमति देता है। FULL OUTER का समर्थन नहीं किया जाता है, लेकिन LEFT OUTER, UNION ALL, और RIGHT OUTER का उपयोग करके, इसे और अधिक CPU चक्र और I / O संचालन की लागत पर नकली किया जा सकता है।

CROSS जॉइन का आउटपुट लेफ्ट टेबल की हर पंक्ति को राइट टेबल की हर पंक्ति के साथ जोड़ देता है। एकमात्र समय मैंने कभी भी देखा है कि एक सीआरओएस का उपयोग डेटाबेस सर्वरों के लोड परीक्षण के दौरान किया जाता है।

आइए एक नज़र डालते हैं कि मूल कार्य कैसे जुड़ते हैं, फिर हम उन्हें अपनी आवश्यकताओं के अनुरूप संशोधित करेंगे।

निम्नलिखित डिज़ाइन गुणों के साथ दो तालिकाओं, प्रोडा और प्रोडब को बनाकर शुरू करते हैं।

पहुंच-टेबल defs

AutoNumber एक स्वचालित रूप से इंक्रीमेंट करने वाला लंबा पूर्णांक है जो प्रविष्टियों को सौंपा जाता है क्योंकि वे तालिका में जोड़े जाते हैं। पाठ विकल्प को संशोधित नहीं किया गया था, इसलिए यह 255 वर्णों तक एक पाठ स्ट्रिंग को स्वीकार करेगा।

अब, उन्हें कुछ डेटा के साथ पॉप्युलेट करें।

पहुंच-टेबल

कैसे 3 प्रकार के काम में अंतर दिखाने के लिए, मैंने प्रोड 1 से प्रविष्टियां 1, 5 और 8 हटा दी हैं।

अगला, पर जाकर एक नई क्वेरी बनाएँ बनाएँ> क्वेरी डिज़ाइन. दिखाएँ तालिका संवाद से दोनों तालिकाओं का चयन करें और जोड़ें पर क्लिक करें, फिर बंद करे.

नया प्रश्न

टेबल प्रोड् में ProductID पर क्लिक करें, इसे टेबल प्रोडब में ProductID पर खींचें और टेबल के बीच संबंध बनाने के लिए माउस बटन छोड़ें।

design_view

आइटम और के बीच संबंधों का प्रतिनिधित्व करने वाली तालिकाओं के बीच की रेखा पर राइट-क्लिक करें संपत्तियों में शामिल हों का चयन करें.

join_properties

डिफ़ॉल्ट रूप से, टाइप करें 1 (INNER) चयनित है। विकल्प 2 एक लेफ्टिनेंट ओटर जॉइन है और 3 राइट ऑउट जॉइन है।

हम पहले INNER को देखेंगे, इसलिए संवाद को खारिज करने के लिए ठीक पर क्लिक करें।

क्वेरी डिज़ाइनर में, उन क्षेत्रों का चयन करें जिन्हें हम ड्रॉप-डाउन सूचियों से देखना चाहते हैं।

डिजाइन-व्यू-2

जब हम क्वेरी (रिबन में लाल विस्मयादिबोधक बिंदु) चलाते हैं, तो यह पहले स्तंभ में तालिका ProdA और दूसरे में ProdB से मान के साथ दोनों तालिकाओं से ProductName फ़ील्ड दिखाएगा।

आंतरिक रूप से जुड़ा

ध्यान दें कि परिणाम केवल उन मानों को दिखाता है जहां ProductID दोनों तालिकाओं में समान है। भले ही तालिका ProdB में ProductID = 1 के लिए कोई प्रविष्टि हो, लेकिन परिणाम में यह प्रदर्शित नहीं होता है क्योंकि Product Prod = 1 तालिका तालिका में मौजूद नहीं है। वही ProductID = 11 पर लागू होता है। यह तालिका ProdA में मौजूद है लेकिन तालिका ProdB में नहीं है।

डिजाइन-रिबन

रिबन पर दृश्य बटन का उपयोग करके और SQL दृश्य पर स्विच करके, आप इन परिणामों को प्राप्त करने के लिए उपयोग किए गए डिज़ाइनर द्वारा उत्पन्न SQL क्वेरी देख सकते हैं।

प्रोडक्ट का चयन करें। ProductName, ProdB.ProductName प्रोड्यूसर से प्रोड्यूसर पर प्रोड्यूस करता है।

डिज़ाइन दृश्य पर वापस जाकर, ज्वाइन प्रकार को 2 (LEFT OUTER) में बदलें। परिणाम देखने के लिए क्वेरी चलाएँ।

बाईं ओर का बाहरी जोड़

जैसा कि आप देख सकते हैं, तालिका ProdA में प्रत्येक प्रविष्टि को परिणामों में दर्शाया गया है जबकि केवल ProductB में तालिका मिलान में ProductID प्रविष्टि का मिलान किया गया है, जिसके परिणाम प्रदर्शित होते हैं।

ProdB.ProductName स्तंभ में रिक्त स्थान एक विशेष मान (NULL) है क्योंकि तालिका ProdB में मेल खाने वाला मान नहीं है। यह बाद में महत्वपूर्ण साबित होगा।

उत्पाद का चयन करें। ProductName, ProductB.ProductName, निर्माता से उत्पाद का उत्पादन करें।

तीसरे प्रकार के जॉइन (RIGHT OUTER) के साथ भी यही कोशिश करें।

right_outer_join

परिणाम तालिका ProdB से सब कुछ दिखाते हैं, जबकि यह रिक्त (NULL के रूप में जाना जाता है) मान दिखा रहा है, जहां ProdA तालिका में मिलान मूल्य नहीं है। अब तक, यह हमारे पाठक के प्रश्न में वांछित परिणामों के सबसे करीब लाता है।

प्रोडक्ट का चयन करें। ProductName, ProdB.ProductName प्रोडक्ट से प्रोडक्ट राइट प्रोडक्शन पर प्रोड्यूस।

किसी क्वेरी में फ़ंक्शंस का उपयोग करना

फ़ंक्शन के परिणाम को क्वेरी के भाग के रूप में भी लौटाया जा सकता है। हम अपने परिणाम सेट में 'परिणाम' नाम का एक नया कॉलम चाहते हैं। इसका मान तालिका ProdA के ProductName कॉलम की सामग्री होगी यदि ProdA का मान है (यह NULL नहीं है), अन्यथा इसे तालिका ProdB से लिया जाना चाहिए।

इस परिणाम को उत्पन्न करने के लिए तत्काल IF (IIF) फ़ंक्शन का उपयोग किया जा सकता है। फ़ंक्शन तीन पैरामीटर लेता है। पहली एक शर्त है जिसे सही या गलत मान का मूल्यांकन करना चाहिए। दूसरा पैरामीटर मान सही होने पर लौटाया जाने वाला मान है, और तीसरा पैरामीटर मान गलत होने पर वापस किया जाने वाला मान है।

हमारी स्थिति के लिए पूर्ण कार्य निर्माण इस तरह दिखता है:

IIF (ProdA.ProductID अशक्त है, ProductB.ProductName, ProdA.ProductName)

ध्यान दें कि हालत पैरामीटर समानता के लिए जाँच नहीं करता है। किसी डेटाबेस में एक शून्य मान में ऐसा मान नहीं होता है, जिसकी किसी अन्य मान सहित किसी अन्य मान से तुलना की जा सके। दूसरे शब्दों में, नल अशक्त के बराबर नहीं है। कभी। इसे प्राप्त करने के लिए, हम इसके बजाय 'Is' कीवर्ड का उपयोग करके मूल्य की जाँच करते हैं।

हम। Is Not Null ’का भी उपयोग कर सकते थे और उसी परिणाम को प्राप्त करने के लिए True और False पैरामीटर के क्रम को बदल दिया।

इसे क्वेरी डिज़ाइनर में डालते समय, आपको पूरे फ़ंक्शन को फ़ील्ड: प्रविष्टि में लिखना होगा। कॉलम 'परिणाम' बनाने के लिए इसे प्राप्त करने के लिए, आपको एक उपनाम का उपयोग करने की आवश्यकता है। ऐसा करने के लिए, फ़ंक्शन को the परिणाम: 'के रूप में निम्न स्क्रीनशॉट में देखा गया है।

राइट बाहरी-एलियास-परिणाम डिजाइन

ऐसा करने के लिए समतुल्य SQL कोड होगा:

उत्पाद का चयन करें।

अब, जब हम इस क्वेरी को चलाते हैं, तो यह इन परिणामों का उत्पादन करेगा।

right_outer_with_aliased_results

यहां हम प्रत्येक प्रविष्टि के लिए देखते हैं जहां टेबल प्रोडए का एक मूल्य है, वह मान परिणाम कॉलम में दिखाई देता है। यदि ProdA तालिका में कोई प्रविष्टि नहीं है, तो ProdB की प्रविष्टि परिणाम में दिखाई देती है, जो वास्तव में हमारे पाठक ने पूछा था।

Microsoft Access सीखने के लिए और अधिक संसाधनों के लिए, जोएल ली की जाँच करें Microsoft प्रवेश कैसे जानें: 5 नि: शुल्क ऑनलाइन संसाधन Microsoft प्रवेश कैसे जानें: 5 नि: शुल्क ऑनलाइन संसाधनक्या आपको बड़ी मात्रा में डेटा का प्रबंधन करना है? आपको Microsoft Access में देखना चाहिए। हमारे मुफ्त अध्ययन संसाधन आपको शुरू करने और अधिक जटिल परियोजनाओं के लिए कौशल सीखने में मदद कर सकते हैं। अधिक पढ़ें .

ब्रूस 70 के दशक से इलेक्ट्रॉनिक्स के साथ खेल रहे हैं, 80 के दशक के शुरुआती दिनों से कंप्यूटर, और तकनीक के बारे में सवालों के सही जवाब दे रहे हैं और न ही उन्होंने पूरे समय का उपयोग किया है। वह गिटार बजाने का प्रयास करके खुद को भी परेशान करता है।