2014-05-09 3 views
15

मैं निम्न क्वेरीलापता FROM-खंड तालिका

SELECT 
    AcId, AcName, PldepPer, RepId, CustCatg, HardCode, BlockCust, CrPeriod, CrLimit, 
    BillLimit, Mode, PNotes, gtab82.memno 
FROM 
    VCustomer 
INNER JOIN 
    vcustomer AS v1 ON gtab82.memacid = v1.acid 
WHERE (AcGrCode = '204' OR CreDebt = 'True') 
AND Masked = 'false' 
ORDER BY AcName 

का उपयोग कर एक inner join एक दृश्य और एक मेज उपयोग करने के लिए कोशिश कर रहा हूँ और त्रुटि के लिए प्रवेश

missing FROM-clause entry for table "gtab82" 
+2

एर, हाँ। आप अपने 'SELECT' और 'ON' खंड में' gtab82' का संदर्भ देते हैं, फिर भी इसे' FROM' या 'JOIN' में निर्दिष्ट नहीं किया है। आप खुद को 'vcustomer' में शामिल होने का प्रयास कर रहे हैं – Phil

उत्तर

12
SELECT 
    AcId, AcName, PldepPer, RepId, CustCatg, HardCode, BlockCust, CrPeriod, CrLimit, 
    BillLimit, Mode, PNotes, gtab82.memno 
FROM 
    VCustomer AS v1 
INNER JOIN 
    gtab82 ON gtab82.memacid = v1.AcId 
WHERE (AcGrCode = '204' OR CreDebt = 'True') 
AND Masked = 'false' 
ORDER BY AcName 

आप आमतौर पर केवल जब तुम में स्तंभ नाम डुप्लिकेट के कारण तालिका नाम से कोई स्तंभ उपसर्ग की जरूरत है एक तालिका नाम के लिए एक अन्य नाम का उपयोग टेबल में शामिल हो गए और तालिका का नाम लंबा है या जब तालिका स्वयं से जुड़ी हुई है। आपके मामले में आप VCustomer के लिए उपनाम का उपयोग करते हैं, लेकिन अनिश्चित कारणों से केवल ON खंड में इसका उपयोग करें। आप अपने कोड के उस पहलू की समीक्षा करना चाह सकते हैं।

+0

यह वास्तव में मेरे लिए उपयोगी था क्योंकि मेरे डेटाबेस में एक हार्डकोडेड क्वेरी थी जिसके पीछे डेटाबेस में एक दृश्य से चयन किया गया था, इसलिए उपनाम के साथ समस्या obfuscated था। –

+0

मैं यह नहीं देख सकता कि क्वेरी के बहुत कठिन नोटिस सुधार के अलावा यह प्रश्न का उत्तर कैसे देता है ("INNER JOIN VCustomer" को "INNER JOIN gtab82" में बदलना)। – ANeves

7

है क्योंकि वह gtab82 तालिका 'isn आपके से या खंड में शामिल नहीं है। आप इन मामलों में gtab82 तालिका देखें: gtab82.memno और gtab82.memacid

संबंधित मुद्दे