समस्या:
आप SQL में दो तालिकाओं से पंक्तियों के सभी संयोजन प्राप्त करना चाहते हैं।
उदाहरण:
यहां दो टेबल हैं:एक में अक्षर होते हैं (letters
), और दूसरे में संख्याएँ होती हैं (numbers
):
पत्र |
---|
X |
Y |
संख्या |
---|
0 |
1 |
2 |
समाधान 1:
letters
numbers
तालिका, हम CROSS JOIN
का उपयोग करेंगे :
SELECT * FROM letters CROSS JOIN numbers;
क्वेरी का परिणाम इस तरह दिखता है:
पत्र | संख्या |
---|---|
X | 0 |
Y | 0 |
X | 1 |
Y | 1 |
X | 2 |
Y | 2 |
समाधान 2:
क्रॉस जॉइन करने का दूसरा तरीका इस प्रकार है:
SELECT * FROM letters, numbers;
यह ठीक वही परिणाम प्राप्त करेगा जो पिछली क्वेरी द्वारा उत्पन्न किया गया था।
चर्चा:
एक सामान्य नियम के रूप में, एक CROSS JOIN
एक परिणाम सेट उत्पन्न करता है जिसमें एक तालिका से प्रत्येक पंक्ति दूसरी तालिका की प्रत्येक पंक्ति से जुड़ जाती है। दूसरे शब्दों में, यदि पहली तालिका n . को संग्रहीत करती है पंक्तियाँ और दूसरी तालिका m संग्रहीत करती है पंक्तियाँ, फिर एक CROSS JOIN
परिणामस्वरूप एक कार्टेशियन उत्पाद . होगा का n × m पंक्तियाँ। यही कारण है कि ऊपर के उदाहरण में क्वेरी द्वारा छह पंक्तियाँ दी गई हैं।
क्योंकि एक CROSS JOIN
शामिल होने वाली तालिकाओं के बीच पंक्तियों के सभी संभावित संयोजनों का उत्पादन करता है, संबंध निर्दिष्ट करने की कोई आवश्यकता नहीं है। तो, अन्य JOINs
के विपरीत , कोई ON
नहीं है CROSS JOIN
में क्लॉज ।