इस लिंक
के अनुसार , जॉइन बनाते समय आपको दोनों नोटेशन को मिलाना नहीं चाहिए। memebers as m, telephone as t
. के रूप में शामिल करने के लिए आप जिस अल्पविराम का उपयोग कर रहे हैं , और उसके बाद inner join
. को कॉल करें , अज्ञात कॉलम त्रुटि को ट्रिगर कर रहे हैं।
इससे निपटने के लिए, CROSS/INNER/LEFT JOIN
का उपयोग करें अल्पविराम के बजाय।
पहले, अल्पविराम ऑपरेटर (,) और जॉइन दोनों की समान प्राथमिकता थी, इसलिए जॉइन एक्सप्रेशन t1, t2 JOIN t3 की व्याख्या ((t1, t2) JOIN t3) के रूप में की गई थी। अब जॉइन की उच्च प्राथमिकता है, इसलिए अभिव्यक्ति की व्याख्या (टी 1, (टी 2 जॉइन टी 3)) के रूप में की जाती है। यह परिवर्तन उन बयानों को प्रभावित करता है जो ON क्लॉज का उपयोग करते हैं, क्योंकि वह क्लॉज केवल जॉइन के ऑपरेंड में कॉलम को संदर्भित कर सकता है, और पूर्वता में परिवर्तन उन ऑपरेंड की व्याख्या को बदल देता है।
शैक्षणिक उद्देश्य के लिए, मैं क्वेरी को इस रूप में जोड़ रहा हूं, जैसा कि मुझे लगता है, यह होना चाहिए:
SELECT m.*, t.*
FROM memebers as m
JOIN telephone as t
JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32
JOIN mitgliedTelephone as mt ON m.id = mt.memeber
चूंकि आप t
. में शामिल नहीं हो रहे हैं और m
, अंतिम परिणाम कार्टेशियन उत्पाद होगा; हो सकता है कि आप इसे संशोधित करना चाहें।
मुझे आशा है कि इससे मदद मिली।