मैं एक एसक्यूएल ट्यूटोरियल देख रहा हूं और ट्यूटोरियल ने जो आदेश दिया है वह मुझे "अस्पष्ट कॉलम नाम" के मेरे SQL सर्वर प्रबंधन स्टूडियो पर एक त्रुटि देता है। क्या यह त्रुटि केवल SQL सर्वर का उपयोग करते समय लागू होती है?

enter image description here

-2
bakalolo 24 जिंदा 2021, 10:22
3
नहीं, यह त्रुटि आम तौर पर लागू होती है, और यह एक बहुत ही खराब ट्यूटोरियल है क्योंकि यह आपको प्राचीन join सिंटैक्स सिखाता है जिसे आपको छोड़ देना चाहिए। कृपया idownvotedbecau.se/imageofcode भी देखें।
 – 
GSerg
24 जिंदा 2021, 10:25
उस ट्यूटोरियल में कुछ भी गलत नहीं था जिसे क्वेरी गलत माना गया था।
 – 
bakalolo
24 जिंदा 2021, 10:57
यह एक खराब ट्यूटोरियल है क्योंकि लगभग 30 साल पहले SQL-92 की शुरुआत के बाद से अल्पविराम से अलग जॉइन सिंटैक्स को बहिष्कृत कर दिया गया है।
 – 
AlwaysLearning
24 जिंदा 2021, 16:02
किक करने की बुरी आदतें - पुरानी शैली जुड़ता है। एक अच्छा ट्यूटोरियल बुरी आदत, इसके कारण होने वाली समस्याओं, एक बेहतर दृष्टिकोण और यह बेहतर क्यों है और पहले की समस्याओं को ठीक करके चीजों को बेहतर ढंग से समझाएगा। और यह सोचना शुरू न करें कि SQL सर्वर के लिए आपके द्वारा सीखे गए कोई भी सिंटैक्स नियम या आदतें हर दूसरी sql बोली पर लागू होती हैं। कई अंतर हैं - अपने संघर्ष में शामिल न हों।
 – 
SMor
24 जिंदा 2021, 16:04

1 उत्तर

सबसे बढ़िया उत्तर

नहीं, कदापि नहीं। हकीकत में, एसक्यूएल में एक कॉलम संदर्भ हमेशा योग्य होना चाहिए - जिसका अर्थ है कि यह कहना चाहिए कि यह किस तालिका से आता है। आप अयोग्य नामों को शॉर्ट-हैंड के रूप में सोच सकते हैं। SQL इंजन तालिका का पता लगाने का पक्ष लेता है जब वह कर सकता है। और जब एक कॉलम कई तालिकाओं में होता है, तो वह इसका पता नहीं लगा सकता है।

आपके प्रश्न पठनीय और स्पष्ट होने चाहिए। आपके मामले में, आपका कोड कुछ इस तरह दिखना चाहिए:

select c.cname
from college c join
     apply a
     on c.cname = a.cname
where c.enrollment > 2000 and a.major = 'CS';

नोट: यह अनुमान लगा रहा है कि enrollment और major कहां से आ रहे हैं, क्योंकि आपकी क्वेरी में इसका पता लगाने के लिए पर्याप्त जानकारी नहीं है।

साथ ही, यह उचित, स्पष्ट, मानक, पढ़ने योग्य JOIN सिंटैक्स का उपयोग करता है। FROM क्लॉज में कभी नहीं कॉमा का इस्तेमाल करें, भले ही आपका कोर्स/ट्यूटोरियल सामग्री ऐसा करती हो। वास्तव में, यह अकेला ही बताता है कि वे पुराने (दशकों पुराने) हैं।

साथ ही, टेबल एलियासेस (संक्षिप्त रूप) का उपयोग करें ताकि प्रश्नों को लिखना और पढ़ना आसान हो।

1
Gordon Linoff 24 जिंदा 2021, 16:48