2012-04-25 12 views
5

में एक चुनिंदा क्वेरी है जिसमें मैंने दो टेबलों में शामिल किया है, T1 और T2 और दोनों तालिकाओं में स्टेटस नामक फ़ील्ड है मुझे लाने की जरूरत नहीं है। जहां खंड में मुझे WHERE STATUS=1 और कुछ और शर्तों को जोड़ने की आवश्यकता है।तालिका नाम या तालिका उपनाम जोड़ने के बिना "प्रश्न में अस्पष्ट क्षेत्र" से कैसे बचें, जहां

लेकिन किसी भी तरह से मैं उस तालिका में तालिका का नाम या तालिका उपनाम नहीं जोड़ सकता जहां मैं धारा T2.STATUS=1 का उपयोग नहीं कर सकता। क्या STATUS=1 पर T1.STATUS पर क्लॉज से हमेशा विचार करने का कोई तरीका है ताकि मैं "अस्पष्ट फ़ील्ड त्रुटि" से बच सकूं?

यहाँ एक नमूना क्वेरी है:

select T1.name, T1.address, T1.phone, T2.title, T2.description from T1 
Left Join T2 on T1.CID=T2.ID 
where STATUS = 1 

ऊपर क्वेरी में, मैं STATUS =1 हमेशा मतलब T2.STATUS

+1

अपनी क्वेरी दिखाएं –

+1

उपनाम का उपयोग करने में समस्या क्या है? आइए इसे ठीक करने का प्रयास करें :) – hgulyan

+1

मुझे लगता है कि आपकी सरलीकृत क्वेरी में समस्या नहीं है। क्या आप असली क्वेरी दिखा सकते हैं? –

उत्तर

3

चाहते आप यदि किसी कारणवश

select T1.name, T1.address, T1.phone, T2.title, T2.description from T1 
Left Join T2 on T1.CID=T2.ID 
where T2.STATUS = 1 
कर साथ नहीं रह सकते के लिए

तो मुझे लगता है कि आप

SELECT T1.name, T1.address, T1.phone, T2.title, T2.description 
FROM ( SELECT CID, name, address, phone 
     FROM T1) AS T1 
LEFT JOIN T2 
ON T1.CID=T2.ID 
WHERE STATUS = 1 

मूल रूप से केवल टी 1 से स्टेटस कॉलम प्राप्त करना छोड़ दें। फिर कोई संघर्ष नहीं हो सकता है।

नीचे की ओर; ऐसा करने का कोई आसान तरीका नहीं है। सरलतमतम में से एक को स्टेटस कॉलम दोनों के अलग-अलग नाम होंगे, लेकिन यह भी चरम लगता है।

+0

या "T1.address, T1.phone, T2.title, T2.description T1 से एक दृश्य" बनाने का प्रयास करें और इसका उपयोग करें जैसे कि यह टी 1 है :) – hgulyan

+0

समस्या यह है कि बाहरी अगर दर्दनाक रूप से धीमा हो जाता है क्वेरी में बहुत सारे रिकॉर्ड हैं। – Dom

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