बिना शर्त के mysql JOIN का उपयोग कैसे करें?


107

क्या बिना ONकथन के जुड़ना लिखना संभव है ? और ये जुड़ाव कैसे अलग LEFT JOIN, RIGHT JOINकाम करते हैं।


1
जैसा कि ONसर्वर सर्वर को बताता है कि टेबल कैसे संबंधित हैं, नहीं। यदि आपके अलग-अलग प्रकार के सभी समान परिणाम देते हैं तो आप इसे किसी भी तरह से गलत कर रहे हैं, और कुछ कोड जोड़ने से हमें आपकी समस्या का पता लगाने में मदद मिल सकती है। अलग-अलग प्रकार के प्रकारों के लिए 2 मिनट के इंट्रो के लिए जेफ एटवुड के ब्लॉग पर माध्य समय में ।
fvu

जवाबों:


153

MySQL प्रलेखन इस विषय को शामिल किया गया।

यहाँ एक सार है। उपयोग करते समय joinया inner join, onहालत वैकल्पिक है। यह एएनएसआई मानक से अलग है और लगभग किसी भी अन्य डेटाबेस से अलग है। प्रभाव एक है cross join। इसी तरह, आप एक onक्लॉज़ का उपयोग कर सकते हैं cross join, जो मानक एसक्यूएल से भी भिन्न होता है।

एक क्रॉस जॉइन एक कार्टेशियन उत्पाद बनाता है - अर्थात, पहली पंक्ति से 1 पंक्ति का हर संभव संयोजन और दूसरी से 1 पंक्ति। क्रॉस तीन पंक्तियों ('ए', 'बी', और 'सी') के साथ एक तालिका के लिए जुड़ता है और चार पंक्तियों वाली तालिका (जैसे 1, 2, 3, 4) में 12 पंक्तियाँ होंगी।

व्यवहार में, यदि आप एक क्रॉस जॉइन करना चाहते हैं, तो उपयोग करें cross join:

from A cross join B

इससे बहुत बेहतर है:

from A, B

तथा:

from A join B -- with no on clause

onखंड एक सही करने के लिए आवश्यक या बाहरी में शामिल होने, इसलिए चर्चा उनके लिए प्रासंगिक नहीं है छोड़ दिया है।

यदि आपको विभिन्न प्रकार के जॉन्स को समझने की आवश्यकता है, तो आपको रिलेशनल डेटाबेस पर कुछ अध्ययन करने की आवश्यकता है। चर्चा के उस स्तर के लिए स्टैकओवरफ़्लो एक उपयुक्त स्थान नहीं है।


1
एक क्रॉस जॉइन के बारे में कभी नहीं सुना या किसी की जरूरत ... आज तक!
गत

11

कुछ उदाहरण देखें http://www.sitepoint.com/understanding-sql-joins-mysql-database/ में

आप 'ON' के बजाय 'USING' का उपयोग क्वेरी में कर सकते हैं

SELECT * FROM table1 LEFT JOIN table2 USING (id);

3
अतिरिक्त स्पष्टीकरण के लिए, दोनों तालिकाओं में शामिल होने वाले कॉलम को
पहचानने के
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.