Cross Joins और Cartesian Products
संयोजनात्मक pairings के लिए CROSS JOIN का जानबूझकर उपयोग कीजिए और missing join keys से होने वाले आकस्मिक Cartesian विस्तार से बचिए।
Cross Joins और Cartesian Products, CoddyKit पर SQL Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
CROSS JOIN क्या है
CROSS JOIN पंक्तियों के हर संभव संयोजन का निर्माण करता है: आउटपुट में m × n पंक्तियाँ होती हैं। इसमें ON क्लॉज़ नहीं होता।
SELECT * FROM a CROSS JOIN b;
-- Equivalent:
SELECT * FROM a, b; -- comma join, no conditionअनजाने कार्तीय गुणनफल
पारंपरिक बग: JOIN की शर्त भूल जाने पर A की हर पंक्ति B की हर पंक्ति के साथ जुड़ जाती है।
SELECT u.email, o.id
FROM users u, orders o; -- missing WHERE u.id = o.user_id !
-- m users × n orders rows — millions!उद्देश्यपूर्ण उपयोग के मामले
CROSS JOIN तब उपयोगी है जब आपको वास्तव में सभी युग्म चाहिए हों:
- खाली-बकेट रिपोर्ट के लिए श्रेणियों × समय-अवधियों के संयोजन
- परीक्षण डेटा: हर उपयोगकर्ता × हर उत्पाद
- कैलेंडर: हर स्टोर × हर तारीख
कैलेंडर × स्टोर का उदाहरण
हर स्टोर के लिए शून्य वाले दिन भरें:
SELECT d.day, s.id, COALESCE(SUM(o.total), 0) AS revenue
FROM generate_series(CURRENT_DATE - 30, CURRENT_DATE, '1 day') AS d(day)
CROSS JOIN stores s
LEFT JOIN orders o ON o.store_id = s.id
AND date_trunc('day', o.created_at) = d.day
GROUP BY d.day, s.id
ORDER BY d.day, s.id;कार्तीय गुणनफल और EXPLAIN
अनचाहा कार्तीय गुणनफल EXPLAIN ANALYZE में बहुत बड़ी पंक्ति-संख्या के रूप में दिखाई देता है:
EXPLAIN ANALYZE
SELECT u.email, o.id FROM users u, orders o;
-- Nested Loop (rows=10000000) ← warning signLATERAL: शर्त-आधारित CROSS JOIN
LATERAL JOIN ऐसा CROSS JOIN है जिसमें दाईं ओर का भाग बाईं ओर के संदर्भ का उपयोग कर सकता है — इसे अगले पाठ में समझाया जाएगा।
क्रमचय और संयोजन
बिना डुप्लिकेट वाले युग्म (A,B) के लिए ON में एक तुलना जोड़ें:
SELECT a.id, b.id
FROM products a
JOIN products b ON a.id < b.id;
-- All unique pairs of products, no (A,A), no (B,A) duplicates of (A,B)VALUES के साथ CROSS JOIN
एक छोटा सेट इनलाइन करें:
SELECT u.email, c.code
FROM users u
CROSS JOIN (VALUES ('EUR'), ('USD'), ('GBP')) AS c(code);कॉमा-आधारित JOIN सिंटैक्स से बचना
निहित कॉमा JOIN (FROM a, b) मान्य है, लेकिन उद्देश्य छिपा देता है। स्पष्ट CROSS JOIN को प्राथमिकता दें:
-- Don't (looks like a typo):
FROM users, orders
-- Do:
FROM users CROSS JOIN ordersप्रदर्शन
CROSS JOIN स्वयं सस्ता है — मूल्यांकन करने के लिए कोई शर्त नहीं होती। लागत आउटपुट पंक्तियों की संख्या है: 10k × 10k = 100M पंक्तियाँ।
पुनरावलोकन
CROSS JOIN = सभी युग्म।
- संयोजनों के लिए जानबूझकर उपयोग करें
- अनजाने कार्तीय गुणनफल से सावधान रहें (WHERE का अभाव)
- खाली स्थान भरने वाली रिपोर्टों के लिए generate_series के साथ संयोजित करें
त्वरित जाँच
आपने SELECT * FROM users u, orders o; लिखा है और WHERE नहीं दिया। आउटपुट क्या होगा?
एआई शिक्षक के साथ SQL सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 46
- पाठ
- 183
अक्सर पूछे जाने वाले प्रश्न
क्या “Cross Joins और Cartesian Products” पाठ निःशुल्क है?
हाँ—“Cross Joins और Cartesian Products” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Cross Joins और Cartesian Products” में मैं क्या सीखूँगा?
संयोजनात्मक pairings के लिए CROSS JOIN का जानबूझकर उपयोग कीजिए और missing join keys से होने वाले आकस्मिक Cartesian विस्तार से बचिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या SQL Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“Cross Joins और Cartesian Products” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस SQL Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर SQL Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Cross Joins और Cartesian Products
- Lateral Joins (LATERAL JOIN)
- Anti-Joins और Semi-Joins (NOT EXISTS)
- Multi-Table Join Performance Tuning