यदि आपको यह बताने में त्रुटि मिलती है कि "बहु-भाग पहचानकर्ता को बाध्य नहीं किया जा सकता है।", इसका आमतौर पर मतलब है कि आप एक या एक से अधिक स्तंभों को एक ऐसी तालिका के साथ उपसर्ग कर रहे हैं जो आपकी क्वेरी में शामिल नहीं है, या एक उपनाम है कि आपने वास्तव में किसी तालिका को असाइन नहीं किया है।
सौभाग्य से, त्रुटि संदेश आपको दिखाता है कि कौन सा बहु-भाग पहचानकर्ता समस्या पैदा कर रहा है।
उदाहरण
त्रुटि कैसे प्राप्त करें, यह प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT * FROM Cats
INNER JOIN Dogs d
ON c.CatName = d.DogName;
परिणाम:
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "c.CatName" could not be bound.
इस उदाहरण में, मैं बिल्लियों . के लिए उपनाम शामिल करना भूल जाता हूं टेबल।
यदि आप पहले से ही एक उपनाम प्रदान करने के बाद तालिका के नाम को संदर्भित करने का प्रयास करते हैं तो भी त्रुटि उत्पन्न होगी।
इस तरह:
SELECT * FROM Cats c
INNER JOIN Dogs d
ON Cats.CatName = d.DogName;
परिणाम:
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "Cats.CatName" could not be bound.
तो इस मामले में, मैंने सही ढंग से उपनाम निर्दिष्ट किया है, लेकिन ON
. में क्लॉज I ने उपनाम के बजाय वास्तविक तालिका नाम का संदर्भ दिया।
समाधान
तो इसका समाधान यह सुनिश्चित करना है कि आपने उन सभी उपनामों को निर्दिष्ट किया है जिन्हें आप बाद में क्वेरी में संदर्भित कर सकते हैं, और यह भी सुनिश्चित करने के लिए कि आप सीधे तालिका नाम के बजाय उन उपनामों का उपयोग करते हैं।
इसलिए यदि आप इस तरह से उपनामों का उपयोग करने जा रहे हैं:
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
या यदि आप इस तरह से उपनामों का उपयोग नहीं करना चुनते हैं:
SELECT * FROM Cats
INNER JOIN Dogs
ON Cats.CatName = Dogs.DogName;