MySQL
अनेको के लिये एक
खोज…
परिचय
एक से कई का विचार (1: M) पंक्तियों के एक दूसरे से जुड़ने की चिंता करता है, विशेष रूप से ऐसे मामले जहां एक तालिका में एक पंक्ति दूसरी पंक्ति में कई पंक्तियों से मेल खाती है।
1: M एक-दिशात्मक है, अर्थात जब भी आप 1: M संबंध बनाते हैं, तो आप किसी अन्य तालिका में 'कई' पंक्तियों का चयन करने के लिए 'एक' पंक्ति का उपयोग कर सकते हैं, लेकिन आप एक 'कई' पंक्ति का उपयोग नहीं कर सकते एकल 'एक' पंक्ति से अधिक का चयन करें।
टिप्पणियों
अधिकांश मामलों के लिए, 1: M संबंध के साथ काम करने के लिए हमें प्राथमिक कुंजी और विदेशी कुंजी को समझना होगा।
एक प्राथमिक कुंजी एक तालिका में एक स्तंभ है जहां उस स्तंभ की कोई भी एक पंक्ति एक एकल इकाई का प्रतिनिधित्व करती है, या, प्राथमिक कुंजी स्तंभ में एक मान का चयन करने से ठीक एक पंक्ति में परिणाम होता है। उपरोक्त उदाहरणों का उपयोग करते हुए, एक EMP_ID एक एकल कर्मचारी का प्रतिनिधित्व करता है। यदि आप किसी एकल EMP_ID के लिए क्वेरी करते हैं, तो आपको संबंधित कर्मचारी का प्रतिनिधित्व करने वाली एक पंक्ति दिखाई देगी।
एक विदेशी कुंजी एक तालिका में एक स्तंभ है जो एक और अलग तालिका की प्राथमिक कुंजी से मेल खाती है। ऊपर हमारे उदाहरण से, EMPLOYEES तालिका में MGR_ID एक विदेशी कुंजी है। आम तौर पर दो तालिकाओं में शामिल होने के लिए, आप उन्हें एक तालिका की प्राथमिक कुंजी और दूसरे में विदेशी कुंजी के आधार पर जोड़ देंगे।
उदाहरण कंपनी टेबल्स
एक कंपनी पर विचार करें जहां हर कर्मचारी जो एक प्रबंधक है, 1 या अधिक कर्मचारियों का प्रबंधन करता है, और प्रत्येक कर्मचारी के पास केवल 1 प्रबंधक होता है।
इसके परिणामस्वरूप दो तालिकाएँ हैं:
कर्मचारियों
EMP_ID | पहला नाम | उपनाम | MGR_ID |
---|---|---|---|
E01 | छोकरा | एप्पलसीड | एम 02 |
E02 | आयलैंड | मैकलीमोर | एम 01 |
E03 | कोल्बी | कागजी कार्रवाई | एम 03 |
E04 | रॉन | Sonswan | एम 01 |
प्रबंधकों
MGR_ID | पहला नाम | उपनाम |
---|---|---|
एम 01 | जोर | मैक्वीन |
एम 02 | गौ | पैंट |
एम 03 | बैरल | जोन्स |
एकल प्रबंधक द्वारा प्रबंधित कर्मचारी प्राप्त करें
SELECT e.emp_id , e.first_name , e.last_name FROM employees e INNER JOIN managers m ON m.mgr_id = e.mgr_id WHERE m.mgr_id = 'M01' ;
का परिणाम:
EMP_ID | पहला नाम | उपनाम |
---|---|---|
E02 | आयलैंड | मैकलीमोर |
E04 | रॉन | Sonswan |
अंततः, हम जिस प्रत्येक प्रबंधक के लिए क्वेरी करते हैं, उसके लिए हम 1 या अधिक कर्मचारी वापस लौट आएंगे।
एकल कर्मचारी के लिए प्रबंधक प्राप्त करें
इस उदाहरण को देखते हुए उपरोक्त उदाहरण तालिकाओं से परामर्श करें।
SELECT m.mgr_id , m.first_name , m.last_name FROM managers m INNER JOIN employees e ON e.mgr_id = m.mgr_id WHERE e.emp_id = 'E03' ;
MGR_ID | पहला नाम | उपनाम |
---|---|---|
एम 03 | बैरल | जोन्स |
जैसा कि यह उपरोक्त उदाहरण का उलटा है, हम जानते हैं कि हम जिस भी कर्मचारी के लिए क्वेरी करते हैं, उसके लिए हम केवल एक ही प्रबंधक देखेंगे।