आपको मानक जॉइन सिंटैक्स का उपयोग शुरू करना चाहिए। अधिक पठनीय होने के अलावा (कम से कम मेरी राय में) यह आपको आकस्मिक कार्टेशियन जॉइन से भी बचाता है यदि आप WHERE क्लॉज में वास्तविक जॉइन कंडीशन को भूल जाते हैं। साथ ही यह क्लंकी (+)
. के विपरीत लगभग सभी DBMS में पोर्टेबल है Oracle द्वारा उपयोग किया गया सिंटैक्स (जिसमें कुछ सीमाएँ भी हैं जो JOIN सिंटैक्स में नहीं हैं)
यहां स्पष्ट (अंतर्निहित के बजाय) का उपयोग करके फिर से लिखी गई क्वेरी है:
SELECT DISTINCT ope.ope_operationid,
ser.ser_code,
opt.opt_code,
ost.ost_code
FROM od_operation ope,
LEFT JOIN od_service_type ser ON ope.ser_id = ser.ser_id
LEFT JOIN od_operation_type opt ON opt.opt_id = ope.opt_id
LEFT JOIN od_status_type ost ON ost.ost_id = ope.ost_id
LEFT JOIN od_equipment_type eqt ON ????????
WHERE ope.opt_id = 3781
AND ope.ope_operationid = 'LAA351BP'
संपादित करें
od_equipment_type
. पर शामिल न होने की स्थिति यही कारण है कि जॉइन सिंटैक्स को प्राथमिकता दी जाती है। यदि मूल SQL में अनुगामी अल्पविराम को हटा दिया जाता है, तो कथन एक अवांछित कार्टेशियन जॉइन बनाएगा जो सर्वर पर गंभीर प्रभाव डाल सकता है यदि शामिल टेबल बड़ी हैं।
जॉइन सिंटैक्स के साथ आपको हमेशा एक सिंटैक्स त्रुटि मिलेगी जो आपको ऐसे टाइपो से रोकती है। जब आप FROM सूची में अल्पविराम छोड़ते हैं, तो निहित जुड़ाव का उपयोग करने से आपको केवल एक त्रुटि मिलेगी, लेकिन कभी भी यदि आप WHERE
में शामिल होने की शर्त को याद नहीं करते हैं