2009-11-16 11 views
9

मैं अक्सर लोग हैं, जो इस तरह एसक्यूएल लिखने देखें:क्या आप एसक्यूएल में बाएं/दाएं जॉइन लिखते समय बाहरी कीवर्ड का उपयोग करते हैं?

SELECT * from TableA LEFT OUTER JOIN TableB ON (ID1=I2) 

मैं अपने आप को बस लिखें:

SELECT * from TableA LEFT JOIN TableB ON (ID1=I2) 
मेरे लिए

"बाहरी" कीवर्ड लाइन शोर तरह है - यह कोई अतिरिक्त जानकारी नहीं कहते हैं, बस एसक्यूएल clutters। यह ज्यादातर आरडीबीएमएस में भी वैकल्पिक है जो मुझे पता है। तो ... लोग अभी भी इसे क्यों लिखते हैं? क्या यह आदत है? पोर्टेबिलिटी? (क्या आपका एसक्यूएल वास्तव में पोर्टेबल है?) कुछ और जो मुझे पता नहीं है?

+0

मैं और अधिक सहमत नहीं हो सका। बाहरी कीवर्ड सिर्फ शोर है। थोड़ा ही काफी है। – gerryster

+0

क्या हम इसका उपयोग नहीं कर सकते हैं जब हम सुनिश्चित नहीं हैं कि तालिका में से कौन सा वास्तव में डेटा है ... और हमें किसी से डेटा चाहिए? –

+0

लगता है जैसे आपको 'पूर्ण [बाहरी] जॉइन' की आवश्यकता है, हालांकि यह आपके विवरण से बिल्कुल स्पष्ट नहीं है। शायद आपको इसके बजाय 'यूनियन' की आवश्यकता है। एक नया प्रश्न लिखें और अपने डेटा और संरचनाओं का विस्तार से वर्णन करें। आपको तुरंत जवाब मिल जाएगा। –

उत्तर

11

OUTER वास्तव में के बाद से सभी OUTER मिलती है या तो LEFT या RIGHT, और पारस्परिक सभी LEFT या RIGHT मिलती OUTER हैं, ज़रूरत से ज़्यादा है के रूप में आप लिखें। तो सिंटैक्टिक रूप से यह ज्यादातर शोर है, जैसा कि आप इसे डालते हैं। यह आईएसओ एसक्यूएल में भी वैकल्पिक है। लोग इसका उपयोग क्यों करते हैं, मुझे लगता है कि कुछ लोगों को OUTER में शामिल होने पर जोर देने की आवश्यकता महसूस होती है, भले ही बाएं या दाएं कीवर्ड पहले से ही कहें। उस मामले के लिए, INNER भी अनिवार्य है!

1

यह केवल स्वाद का विषय है, मुझे लगता है कि लोग इसका उपयोग करते हैं क्योंकि उन्हें लगता है कि यह अधिक पठनीय कोड की ओर जाता है। उदाहरण के लिए, मैं भी वैकल्पिक AS कीवर्ड का उपयोग करना पसंद करता हूं क्योंकि SELECT ... FROM table AS t मेरे लिए SELECT ... FROM table t से अधिक पठनीय दिखता है।

5

हाँ

यह सिर्फ बातें मेरी राय में स्पष्ट करने - स्पष्ट और अधिक स्पष्ट है कि आप अपने इरादे राज्य, बेहतर (विशेष रूप से किसी और पढ़ सकते हैं और बाद में अपने कोड समझने की कोशिश कर के लिए)।

लेकिन यह मेरी राय है - यह तकनीकी रूप से आवश्यक नहीं है, इसलिए आप इसका उपयोग कर सकते हैं - या इसे छोड़ सकते हैं।

+1

+1 "विशेष रूप से किसी अन्य व्यक्ति के लिए आपके कोड को पढ़ने और समझने की कोशिश कर रहा है" – Seb

1

मैं 'आंतरिक शामिल', 'बाएं शामिल', 'दाएं शामिल', और 'पूर्ण बाहरी शामिल' का उपयोग कर रहा हूं। 'भीतर' के बिना 'शामिल' यह मेरे लिए कुछ हद तक महत्वाकांक्षी बनाता है; 'सही' 'छोड़' और आत्म वर्णनात्मक और 'पूर्ण' कर रहे हैं कि यह विशेष सिंटेक्स :)

2

सं हकदार एक जानवर इस तरह है मैं उपयोग

  • शामिल हों
  • बायाँ शामिल हों
  • अधिकार शामिल हों
  • पूर्ण बाहरी शामिल हों
  • क्रॉस शामिल हों

कोई AMB नहीं है मेरे लिए iguity।

+3

क्यों 'पूर्ण बाहरी शामिल' के बजाय 'पूर्ण जुड़ने' का उपयोग क्यों नहीं करें? –

0

मैं OUTER कीवर्ड का उपयोग करता हूं। मैं मानता हूं कि यह केवल स्वाद का विषय है, लेकिन इसे छोड़कर मुझे थोड़ा गड़बड़ होने के रूप में हमला किया जाता है लेकिन INNER कीवर्ड (मैला) या कम मामले में एसक्यूएल कीवर्ड लिखने से बहुत बुरा नहीं है (बहुत ढीला)।

2

एक बात यह है कि स्टैक ओवरफ्लो पर कई महीनों ने मुझे दिखाया है कि एसक्यूएल को एसक्यूएल या रिलेशनल डेटाबेस के पिछले एक्सपोजर वाले लोगों द्वारा कितना एसक्यूएल लिखा और/या बनाए रखा गया है।

इसी कारण से, मुझे लगता है कि जितना अधिक स्पष्ट हो सकता है कि आप अगले प्रोग्रामर से बेहतर हो सकते हैं, जब आपका कोड देख रहे हों।

0

मुझे लगता है कि वर्ष 200 9 में पोर्टेबल एसक्यूएल जैसी कोई चीज़ नहीं है ... किसी बिंदु पर, आपको डीबीएमएस-विशिष्ट कथन लिखने की आवश्यकता है (जैसे शीर्ष एन पंक्तियां)।

मुझे व्यक्तिगत रूप से जॉइन सिंटैक्स अनावश्यक लगता है और इसके बजाय मैं अलग-अलग तालिका नामों को ढूंढता हूं।

संबंधित मुद्दे