किसी क्वेरी के प्रक्षेपण में किसी दिए गए नाम का केवल एक उदाहरण हो सकता है। जैसा कि आपका WHERE क्लॉज दिखाता है, आपके पास आईडी नामक कॉलम के साथ कई टेबल हैं। क्योंकि आप *
. का चयन कर रहे हैं आपके प्रोजेक्शन में कई कॉलम होंगे जिन्हें आईडी कहा जाता है। या यह ORA-00918 को प्रभावित करने वाले संकलक के लिए नहीं होता।
समाधान काफी सरल है:आपको नामित स्तंभों को स्पष्ट रूप से चुनने के लिए प्रक्षेपण का विस्तार करना होगा। फिर आप या तो डुप्लिकेट कॉलम छोड़ सकते हैं, बस (कहें) COACHES.ID बनाए रख सकते हैं या कॉलम उपनाम का उपयोग कर सकते हैं:coaches.id as COACHES_ID
।
शायद यह आपको बहुत टाइपिंग के रूप में प्रभावित करता है, लेकिन यह एकमात्र तरीका है। अगर यह कोई आराम है, SELECT *
उत्पादन कोड में खराब अभ्यास के रूप में माना जाता है:स्पष्ट रूप से नामित कॉलम अधिक सुरक्षित होते हैं।