विकिपीडिया:
"गणित में, एक द्विआधारी संक्रिया क्रमविनिमेय होती है यदि ऑपरेंड के क्रम को बदलने से परिणाम नहीं बदलता है। यह कई द्विआधारी संक्रियाओं का एक मूलभूत गुण है, और कई गणितीय प्रमाण इस पर निर्भर करते हैं।"
उत्तर:
नहीं, लेफ्ट जॉइन कम्यूटिव नहीं है। और इनर जॉइन है।
लेकिन वास्तव में आप यही नहीं पूछ रहे हैं।
निम्नलिखित प्रश्न है:
TableA INNER JOIN TableB LEFT JOIN TableC LEFT JOIN TableD
(सभी एक आईडी कॉलम में शामिल हो गए) इसके बराबर:
TableA INNER JOIN TableB
INNER JOIN TableC
LEFT JOIN TableD
UNION
TableA INNER JOIN TableB
LEFT JOIN TableC ON TableB.c_id IS NULL
LEFT JOIN TableD
उत्तर:
भी नहीं। यूनियन और जॉइन वास्तव में एक ही चीज़ को पूरा नहीं करते हैं, आम तौर पर बोलते हैं। किसी मामले में आप उन्हें समान रूप से लिखने में सक्षम हो सकते हैं, लेकिन मुझे नहीं लगता कि आप इतना सामान्य छद्म एसक्यूएल दिखा रहे हैं। ON संविधान ऐसा लगता है कि इसे काम नहीं करना चाहिए (शायद कुछ ऐसा जिसके बारे में मैं MySQL में नहीं जानता?)
यहां प्रश्नों का एक सरलीकृत सेट दिया गया है जो मुझे लगता है कि समकक्ष होगा।
SELECT *
FROM TableA a
LEFT JOIN
TableB b ON a.id = b.id_a
SELECT *
FROM TableA a
INNER JOIN
TableB b ON a.id = b.id_a
UNION
SELECT *
FROM TableA a
LEFT JOIN
TableB b ON a.id = b.id_a
WHERE TableB.id IS NULL
2 संपादित करें:
यहां एक और उदाहरण दिया गया है जो आपके करीब है लेकिन संक्षेप में वही है।
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
LEFT JOIN TableC c ON b.id = c.id_b
के समान है
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
INNER JOIN TableC c ON b.id = c.id_b
UNION
SELECT *
FROM TableA a
INNER JOIN TableB b ON a.id = b.id_a
LEFT JOIN TableC c ON b.id = c.id_b
WHERE TableC.id IS NULL
लेकिन मैं अभी भी यह मत सोचो कि मैं तुम्हारे असली प्रश्न का उत्तर दे रहा हूँ।