आपको त्रुटि मिलने का कारण है एलियासिंग AS X
. लेकिन समस्या वास्तव में यह है कि आपने *
. का उपयोग किया है , अपने इच्छित फ़ील्ड को सूचीबद्ध करने के बजाय।
पहली क्वेरी में, SELECT *
वास्तव में इस तरह के क्षेत्रों का उत्पादन करता है:
A.id, A.name, A.description, B.id, B.name, B.date_started, C.id, C.name, C.isDeleted
यह ठीक काम करता है, जब तक कि आप किसी फ़ील्ड को उसके नाम से सीधे संदर्भित करने का प्रयास नहीं करते हैं और इसके उपनाम का उपयोग नहीं करते हैं। किसी भी तरह से आपके SQL इंजन को इससे कोई समस्या नहीं होगी, आप परिणाम सेट के साथ जो कुछ भी कर रहे हैं उसमें अभी भी समस्या हो सकती है।
हालाँकि जब आप अपनी क्वेरी को एक सबक्वेरी और उपनाम में ले जाते हैं तो परिणाम AS X
, तो आप इसके साथ समाप्त होते हैं:
X.id, X.name, X.description, X.id, X.name, X.date_started, X.id, X.name, X.isDeleted
अब आप देख सकते हैं कि यह शिकायत क्यों कर रहा है। आप देख सकते हैं कि इसका उपयोग करना भी बुरा क्यों है*
, क्योंकि यह संयोजन कुछ समय के लिए काम कर सकता है, और फिर आप किसी मौजूदा तालिका में एक नया फ़ील्ड जोड़ते हैं, जो कि किसी अन्य तालिका के समान है, और इन दोनों तालिकाओं के साथ आपके द्वारा लिखी गई प्रत्येक क्वेरी को अब करने की आवश्यकता है फिर से लिखा गया।