जब आप अपने डेटाबेस के साथ काम कर रहे हों, तो आपको कुछ अलग-अलग तालिकाओं से डेटा एकत्र करने की आवश्यकता हो सकती है। यह लेख आपको दिखाएगा कि कैसे।
मैंने पहले ही यहां और यहां SQL जॉइन के बारे में लिखा है, लेकिन आइए समीक्षा करने के लिए कुछ समय दें कि जॉइन पहले कैसे काम करता है, और विशेष रूप से MySQL के लिए विशिष्ट सिंटैक्स।
SQL जॉइन स्टेटमेंट
जॉइन एक ऐसा स्टेटमेंट है जो आपको दो टेबल्स को एक साथ रखने देता है, एक-दूसरे से संबंधित पंक्तियों का मिलान करता है, और केवल उन पंक्तियों को रखता है जिनका मिलान किया जा सकता है, बिना जोड़ी वाली पंक्तियों को नहीं रखना।
SELECT * FROM table1
INNER JOIN table2
ON table1.id = table2.id;
SELECT ... FROM
कथन इंगित करता है कि पहली तालिका कौन सी है, फिर दूसरी तालिका का नाम INNER JOIN
के ठीक बाद लिखा जाता है खोजशब्द।
दो तालिकाओं को कैसे जोड़ा जाना चाहिए ON
. में लिखा है बयान। इस मामले में दो तालिकाओं को table1.id = table2.id
. संबंध का उपयोग करके जोड़ा जाता है ।
एक ही समय में एक से अधिक टेबल में शामिल होने के लिए एक साथ कई जॉइन स्टेटमेंट का उपयोग करना संभव है।
SELECT *
FROM table1
INNER JOIN table2
ON table1.id = table2.id
INNER JOIN table3
ON table2.id = table3.id;
ऐसा करने के लिए आप एक दूसरा INNER JOIN
add जोड़ें कथन और दूसरा ON
तीसरी तालिका और दूसरे संबंध को इंगित करने के लिए कथन।
आइए एक पल के लिए उन संबंधों के बारे में बात करते हैं जो आपके तालिकाओं के बीच हो सकते हैं और आप तीन तालिकाओं को एक साथ क्यों जोड़ना चाहते हैं।
SQL में टेबल के बीच संबंध
जब आपके पास एक-दूसरे से संबंधित तालिकाएं हों, तो उनके संबंध विभिन्न प्रकारों में से एक हो सकते हैं।
एक-से-अनेक
एक-से-अनेक प्रकार के संबंध में, पहली तालिका की एक पंक्ति दूसरी तालिका की एकाधिक पंक्तियों से संबंधित हो सकती है।
एक रिलेशनल डेटाबेस में इसे दूसरी तालिका के साथ कार्यान्वित किया जा सकता है जिसमें first_table_id
. है कॉलम जो बताता है कि पहली तालिका की किस पंक्ति से वह पंक्ति संबंधित है।
अनेक-टू-वन
कई-से-एक प्रकार के संबंध में, पहली तालिका की एक पंक्ति दूसरी तालिका की एक पंक्ति से संबंधित हो सकती है, और दूसरी तालिका की एक पंक्ति पहली तालिका की कई पंक्तियों से संबंधित हो सकती है।
एक रिलेशनल डेटाबेस में इसे पहली तालिका के साथ कार्यान्वित किया जा सकता है जिसमें second_table_id
. है कॉलम जो बताता है कि वह पंक्ति दूसरी तालिका की किस पंक्ति से संबंधित है।
अनेक-से-अनेक
इस मामले में कई पंक्तियाँ कई पंक्तियों से संबंधित होती हैं।
इस तरह के संबंध को SQL तालिकाओं के साथ प्रदर्शित नहीं किया जा सकता है - आपको दो तालिकाओं के बीच एक युग्मन तालिका जोड़ने की आवश्यकता है ताकि तालिकाओं के बीच केवल कई-से-एक और एक-से-कई संबंध मौजूद हों।
बीच में तालिका की प्रत्येक पंक्ति बाईं तालिका की पंक्तियों और दाईं तालिका की पंक्तियों के बीच एक संबंध का प्रतिनिधित्व करती है।
MySQL में व्यवहार में, उस मध्य तालिका में first_table_id
. के लिए एक कॉलम होगा और second_table_id
. के लिए एक कॉलम , प्रत्येक संयोजन अद्वितीय होने के साथ।
एसक्यूएल टेबल्स को अभ्यास में शामिल करना
आइए कल्पना करें कि हमारे पास एक संगठन का डेटाबेस है, जहां हमारे पास टीमों के साथ एक टेबल है (उनका नाम, और अन्य पहचान जानकारी), और परियोजनाओं के साथ एक टेबल (नाम, प्रगति, और इसी तरह)।
आईडी | टीम_नाम | विशेषता |
---|---|---|
1 | केले फेंकने वाले | केले |
2 | लकड़ी काटने वाले | लकड़ी को कुतरना |
3 | गुलाबी हाथी | जमीन पर पेट भरना |
4 | शराबी आलू | काम करना और सोना |
आईडी | <थ>प्रोजेक्ट_नाम <थ>प्रगति||
---|---|---|
1 | बांध निर्माण | कुछ और लकड़ी काटने और जमीन पर पेट भरने की जरूरत है |
2 | केले का केक | कोई सभी केले खा रहा है |
3 | नींद अनुसंधान | बहुत सोना पर्याप्त शोध नहीं |
चूंकि एक टीम कई परियोजनाओं पर काम कर सकती है, और एक परियोजना पर कई टीमों द्वारा काम किया जा सकता है, एक तीसरी तालिका भी है जो टीम-प्रोजेक्ट मैचों का ट्रैक रखती है।
project_id | group_id |
---|---|
1 | 2 |
1 | 3 |
2 | 1 |
3 | 1 |
3 | 2 |
3 | 3 |
3 | 4 |
हम एक JOIN
. का उपयोग कर सकते हैं सब कुछ एक साथ रखने के लिए बयान जब हमें टेबल से जानकारी को मानव पठनीय तरीके से देखने की आवश्यकता होती है, जैसे:
SELECT
teams.team_name AS team_name,
projects.project_name AS project_name
FROM TABLE teams
INNER JOIN matches
ON teams.id = matches.team_id
INNER JOIN matches
ON matches.project_id = projects.id
ORDER BY teams.id;
हम चुनते हैं कि प्रत्येक तालिका से SELECT
. के साथ कौन से कॉलम दिखाना है बयान।
हम निर्दिष्ट करते हैं कि टेबल की पंक्तियों को ON
. के साथ कैसे जोड़ा जाए बयान।
और हम पंक्तियों को उस तरह से ऑर्डर करते हैं जैसे हम ORDER BY
. के साथ पसंद करते हैं बयान।
ON
स्टेटमेंट teams.id = matches.team_id
और matches.projects_id = projects.id
इसका मतलब है कि पंक्तियों को matches
. की पंक्तियों का उपयोग करके संयोजित किया जाता है टेबल। आउटपुट टेबल की प्रत्येक पंक्ति में प्रोजेक्ट का नाम और टीम का नाम होता है जो प्रोजेक्ट आईडी और टीम आईडी के जोड़े का उपयोग matches
में करता है। टेबल।
आउटपुट टेबल नीचे की तरह दिखेगा।
टीम_नाम | <थ>प्रोजेक्ट_नाम|
---|---|
केले फेंकने वाले | केले का केक |
केले फेंकने वाले | नींद अनुसंधान |
लकड़ी काटने वाले | बांध निर्माण |
लकड़ी काटने वाले | नींद अनुसंधान |
गुलाबी हाथी | बांध निर्माण |
गुलाबी हाथी | बांध निर्माण |
शराबी आलू | नींद अनुसंधान |
matches
. से सीधे कोई कॉलम नहीं है टेबल। matches
तालिका आउटपुट में नहीं दिखाई जाती है, लेकिन इसका उपयोग teams
की पंक्तियों को संयोजित करने के निर्देश के रूप में किया जाता है और projects
टेबल.
निष्कर्ष
JOIN
कथन आपको एक या अधिक तालिकाओं को एक साथ जोड़ने देता है। इसका उपयोग ON
. के संयोजन में किया जाना चाहिए एक तालिका की पंक्तियों और एक अलग तालिका की पंक्तियों के बीच संबंध निर्धारित करने के लिए कथन।
इस लेख में आपने सीखा है कि JOIN
. का उपयोग कैसे किया जाता है तीन अलग-अलग तालिकाओं को एक साथ जोड़ने का कथन।