दिलचस्प पोस्ट
एंड्रॉइड एमुलेटर को तेजी से चलाना कैसे गिट में किसी अन्य शाखा में कुछ प्रतिबद्धता को स्थानांतरित करने के लिए? निर्धारित करें कि एक अनुक्रम में Linq का उपयोग करते हुए दूसरे अनुक्रम के सभी तत्व शामिल हैं क्रूज़ नियंत्रण बनाम टीमसिटी लगातार एकीकरण के लिए? Cplusplus.com में क्या गलत है? सी ++ 11 में लैम्ब्डा अभिव्यक्ति क्या है? क्यों jQuery या एक DOM विधि जैसे getElementById तत्व नहीं मिल रहा है? 'var' पैरामीटर नापसंद किए गए हैं और स्विफ्ट 3 में निकाल दिए जाएंगे एंड्रॉइड वेबव्यू में फ़ुलस्क्रीन पर HTML5 वीडियो चला रहा है प्रदर्शन पर बदलाव: संपत्ति क्या आप सीएसवी फाइल पढ़ने के लिए जावा लाइब्रेरी की सिफारिश कर सकते हैं? सूची दृश्य खाली होने पर खाली दृश्य दिखा रहा है कुल / चल रहे शेष राशि की गणना करें C ++ में फ्लोट के लिए गोल () URL का अंतिम सेगमेंट

एसक्यूएल में शामिल होने के मामले क्या है?

निष्पादन को अनदेखा करने के लिए, क्या मुझे नीचे दिए गए क्वेरी ए और बी से एक ही परिणाम मिलेगा? सी और डी के बारे में कैसे?

-- A select * from a left join b on <blahblah> left join c on <blahblan> -- B select * from a left join c on <blahblah> left join b on <blahblan> -- C select * from a join b on <blahblah> join c on <blahblan> -- D select * from a join c on <blahblah> join b on <blahblan> 

वेब के समाधान से एकत्रित समाधान "एसक्यूएल में शामिल होने के मामले क्या है?"

INNER लिए, नहीं, ऑर्डर में कोई फर्क नहीं पड़ता। जब तक आप SELECT * से SELECT a.*, b.*, c.* अपने चयन को बदलते हैं, तब तक क्वेरी उसी परिणाम वापस आ जाएगी।


( LEFT , RIGHT या FULL ) के लिए OUTER जुड़ जाता है, हाँ, ऑर्डर के मामले – और ( अद्यतन ) चीजें बहुत अधिक जटिल हैं।

सबसे पहले, बाहरी जुड़ने में बदलाव नहीं किया जाता है, इसलिए a LEFT JOIN b एक ही नहीं है जैसे कि b LEFT JOIN a

बाहरी जॉइन भी एसोसिएटिव नहीं हैं, इसलिए आपके उदाहरणों में दोनों (कम्यूटेटिटी और सहयोगी गुण) सम्मिलित हैं:

 a LEFT JOIN b ON b.ab_id = a.ab_id LEFT JOIN c ON c.ac_id = a.ac_id 

के बराबर है :

 a LEFT JOIN c ON c.ac_id = a.ac_id LEFT JOIN b ON b.ab_id = a.ab_id 

परंतु:

 a LEFT JOIN b ON b.ab_id = a.ab_id LEFT JOIN c ON c.ac_id = a.ac_id AND c.bc_id = b.bc_id 

के बराबर नहीं है :

 a LEFT JOIN c ON c.ac_id = a.ac_id LEFT JOIN b ON b.ab_id = a.ab_id AND b.bc_id = c.bc_id 

एक अन्य (उम्मीद है कि सरल) सहयोगी उदाहरण। इस तरह के बारे में सोचें (a LEFT JOIN b) LEFT JOIN c :

 a LEFT JOIN b ON b.ab_id = a.ab_id -- AB condition LEFT JOIN c ON c.bc_id = b.bc_id -- BC condition 

यह a LEFT JOIN (b LEFT JOIN c) बराबर है a LEFT JOIN (b LEFT JOIN c) :

 a LEFT JOIN b LEFT JOIN c ON c.bc_id = b.bc_id -- BC condition ON b.ab_id = a.ab_id -- AB condition 

केवल इसलिए कि हमारे पास "अच्छा" शर्तों ON हैं दोनों ON b.ab_id = a.ab_id और c.bc_id = b.bc_id समानता जांच हैं और NULL तुलना शामिल नहीं करते।

आप अन्य संचालकों या अधिक जटिल लोगों के साथ भी परिस्थितियां बना सकते हैं जैसे: ON ax <= bx या ON ax = 7 या ON ax LIKE bx या ON (ax, ay) = (bx, by) और दो प्रश्न अभी भी समान होंगे ।

यदि हालांकि, इनमें से कोई भी शामिल IS NULL या एक समारोह जो कि COALESCE() जैसे नल से संबंधित है, उदाहरण के लिए, यदि स्थिति b.ab_id IS NULL , तो दो प्रश्न समान नहीं होंगे।

नियमित रूप से जुड़ने के लिए, यह नहीं है TableA join TableB एक ही निष्पादन योजना उत्पादन के रूप में TableB join TableA (इसलिए आपके सी और डी उदाहरण होगा)

बाएं और दाएं के लिए यह करता है TableA left Join TableB से TableB left Join TableA TableA left Join TableB से अलग है, TableB left Join TableA अलावा, लेकिन TableB right Join TableA तुलना में इसके समान TableB right Join TableA