2012-01-27 5 views
7

के साथ अज्ञात कॉलम समस्या मुझे पता नहीं लगा सकता कि कॉलम एक ऊर्फ बनने पर मुझे अज्ञात कॉलम क्यों मिल रहा है। कोई भी मदद बहुत अच्छी रहेगी।mysql alias

कोड:

SELECT DISTINCT 
    c.id, 
    ((SUM(c.width_feet)*12)+(SUM(c.width_inches))) AS width, 
    ((SUM(c.height_feet)*12)+(SUM(c.height_inches))) AS height 
    FROM carpets AS c 
    WHERE c.active = '1' 
    AND (width BETWEEN '0' AND '275') 
    AND (height BETWEEN '0' AND '599') 
    ORDER BY c.item_no 

त्रुटि:

Unknown column 'width' in 'where clause'

उत्तर

10

आप नाम से सीधे उपनाम तक नहीं पहुंच सकते हैं।

एक समाधान एक सबक्वेरी में उपनाम के साथ क्वेरी रैप करने के लिए, और फिर एक बाहरी क्वेरी में उर्फ ​​नाम का उल्लेख है:

SELECT DISTINCT * 
FROM 
    (
    SELECT c.id, 
      ((SUM(c.width_feet)*12)+(SUM(c.width_inches))) AS width, 
      ((SUM(c.height_feet)*12)+(SUM(c.height_inches))) AS height 
    FROM carpets AS c 
    WHERE c.active = '1' 
    ) sub 
WHERE (sub.width BETWEEN '0' AND '275') 
AND (sub.height BETWEEN '0' AND '599') 
ORDER BY sub.item_no 
+0

का अमान्य उपयोग जो त्रुटि से छुटकारा पाता है, हालांकि अब यह कोई परिणाम नहीं दिखाता है जब इसे 1046 परिणाम दिखाना चाहिए .... कोई विचार –

+0

@Nate - क्या आंतरिक क्वेरी पुनर्प्राप्त होती है कोई परिणाम? और यदि हां, तो सीमाओं के भीतर चौड़ाई और ऊंचाई क्या आप जांच रहे हैं? –

+0

@Nate - मैंने 'DISTINCT' को बाहरी' SELECT' तक भी ले जाया। इससे समस्याएं भी हो सकती थीं। –

0

मुझे नहीं लगता कि आप अपने में अपने "चौड़ाई" अन्य नाम का उपयोग कर सकते हैं ".. के बीच चौड़ाई और .."; आपको दुख की बात है, कच्ची गणना दोहराने की जरूरत है। "ऊंचाई" के लिए वही। इसलिए, निम्नलिखित कार्य करना चाहिए:

SELECT DISTINCT c.id, 
     ((SUM(c.width_feet)*12)+(SUM(c.width_inches))) AS width, 
     ((SUM(c.height_feet)*12)+(SUM(c.height_inches))) AS height 
FROM  carpets AS c 
WHERE c.active = '1' 
AND  (((SUM(c.width_feet)*12)+(SUM(c.width_inches))) BETWEEN '0' AND '275') 
AND  (((SUM(c.height_feet)*12)+(SUM(c.height_inches))) BETWEEN '0' AND '599') 
ORDER BY c.item_no 
+1

कोशिश करते समय मुझे त्रुटि मिलती है: समूह फ़ंक्शन –

6

आप खंड द्वारा क्रम में उपनाम का उपयोग कर सकते हैं, लेकिन आप कर सकते हैं क्लॉज द्वारा कहां या समूह में उपनाम का उपयोग नहीं करते हैं। या तो आप अभिव्यक्ति दोहराते हैं या आप एक सबक्वायरी का उपयोग कर सकते हैं।