दिलचस्प पोस्ट
ऑब्जेक्ट की विशेषता के आधार पर ऑब्जेक्ट की एक सूची को कैसे सॉर्ट करना है? स्ट्रिंग को अबाधनीय होने का क्या लाभ है? जेनेरिक्स, एरेज़, और क्लासकास्ट एक्सप्शन पीडीओ यूटीएफ -8 चरित्र मुद्दा विस्तृत 500 त्रुटि संदेश, एएसपी + आईआईएस 7.5 System.Web.HttpContext.Current.User.Identity.Name बनाम System.Environment.UserName में ASP.NET सबसे अच्छा क्रॉस प्लेटफॉर्म (पोर्टेबल) मनमाना परिशुद्धता गणित पुस्तकालय फ़ंक्शन के भीतर से ग्लोबल एएनवीवी को कई ऑब्जेक्ट सौंपें मॉडल में वर्तमान_उज़र एक्सेस करें हैस्केल कोड का यह हिस्सा समझाएं जो कि प्रमेय की धारा का उत्पादन करता है विजुअल स्टूडियो: मैं एक बेस क्लास से विरासत में मिली सभी वर्गों को कैसे दिखाऊं? सी ++ प्रतिनिधि क्या है? जावा 8 में दो तिथियों के बीच दिन की गणना करें टूल: एंड्रॉइड मैनिफेस्ट में जगह नहीं बदले रिफ्लेक्शन के साथ राइट जेनेरिक मेथड चुनें

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

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

-- 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> 

Solutions Collecting From Web of "एसक्यूएल में शामिल होने के मामले क्या है?"

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