2011-07-25 19 views
6

में मामले का उपयोग कैसे करें मैं केवल स्थिति = 1 रिकॉर्ड्स प्राप्त करना चाहता हूं। लेकिन मेरे पास मेरी तालिका में स्टेटस कॉलम नहीं है। इसलिए मैंने केस का उपयोग करके मूल्य प्राप्त किया ... जब ...। लेकिन जब मैं खंड में मामले का उपयोग करने का प्रयास करता हूं, तो यह वाक्यविन्यास त्रुटि दिखाता है।क्लॉज

मेरी क्वेरी

SELECT SQL_CALC_FOUND_ROWS *, 
    CASE 
     WHEN quantity > num_used AND (CURDATE() BETWEEN coupon_start_date AND coupon_end_date) THEN '1' 
     ELSE '0' 
    END AS STATUS 
FROM 
    table_coupon_code 
WHERE 
    (CASE 
     WHEN quantity > num_used AND (CURDATE() BETWEEN coupon_start_date AND coupon_end_date) THEN '1' 
     ELSE '0' 
    END AS STATUS) = '1' AND coupon_status <> '2' 

मैं यह कैसे कर सकते?

उत्तर

16

जहां खंड

SELECT SQL_CALC_FOUND_ROWS * , 
    CASE WHEN quantity > num_used AND (CURDATE() BETWEEN coupon_start_date AND coupon_end_date) 
    THEN '1' 
    ELSE '0' 
    END AS STATUS 
FROM table_coupon_code 
WHERE 
CASE WHEN quantity > num_used AND (CURDATE() BETWEEN coupon_start_date AND coupon_end_date) 
    THEN '1' 
    ELSE '0' 
    END = '1' 
AND coupon_status <> '2' 

लेकिन अपने CASE वास्तव में अनावश्यक है से निकालें AS STATUS। बस आप मामले बयान आप एक subselect में चुनिंदा लपेटो या एक दृश्य बना सकता है दोहराने के लिए नहीं करना चाहते हैं स्टैंड-अलोन के रूप में की तरह

[...] 
WHERE quantity > num_used AND 
CURDATE() BETWEEN coupon_start_date AND coupon_end_date AND 
coupon_status <> '2' 
+0

आपको बहुत धन्यवाद – Gowri

+0

लेकिन आपका 'केस' वास्तव में अनावश्यक है, मेरी संपादित पोस्ट देखें। – rabudde

3

WHERE हालत, अपने CASE हालत का उपयोग करें। सबसिलेक्ट है

select status 
    from (select case 
      when zip like '4321%' then 1 else 0 end as status 
      from adr 
     ) t 
where status = 1; 
0

की तरह कुछ मुझे लगता है कि आप कुछ अन्य, अधिक जटिल प्रश्न हैं के रूप में एक आपके द्वारा दिए गए के बराबर है:

SELECT SQL_CALC_FOUND_ROWS * , 
     '1' AS STATUS 
FROM table_coupon_code 
WHERE quantity > num_used 
    AND CURDATE() BETWEEN coupon_start_date AND coupon_end_date 
    AND coupon_status <> '2' 
1

कोई नहीं होने खण्ड सुझाए गए?

यह आपको वास्तविक परिणामों की बजाय चयनित कॉलम से पूछताछ करने की अनुमति देता है। केस और फ़ंक्शन कॉल का उपयोग करने के लिए बढ़िया।