2012-02-16 11 views
5

क्या कोई इस प्रश्न के साथ मेरी सहायता कर सकता है?वैकल्पिक अनुमान के लिए केस का उपयोग

मैं केस का उपयोग करने के लिए नया हूं, मैं यह काम कैसे कर सकता हूं। यदि अधिकार = प्रबंधक तो मैं मामले के भीतर कोड चलाने के लिए चाहता हूँ।

select email, user_id, first_name, last_name, rights 
from users u 
where company_id = 2141 
    and receives_emails = 'y' 
    case u.rights when 'manager' then 
     and user_id in (select user_id from manager_depts where company_id = u.company_id and dept_id = 2) 
    end 

धन्यवाद!

+0

क्या RDBMS प्रयोग कर रहे हैं? – Dan

+0

क्या आप यह देखने का प्रयास कर रहे हैं कि उपयोगकर्ता एक प्रबंधक है या आप केवल उन्हें वापस करना चाहते हैं यदि वे प्रबंधक हैं? यह एक अनिवार्य भाषा नहीं है - आप एक 'WHERE' खंड के अंदर से एक तालिका को संशोधित नहीं कर सकते हैं। –

उत्तर

5

आप वास्तव में एक मामला यहां जरूरत नहीं है,

SELECT email, u.user_id, first_name, last_name, rights 
FROM users u 
    LEFT JOIN manager_depts d ON d.company_id = u.company_id and d.dept_id = 2 
WHERE company_id = 2141 AND receives_emails = 'y' 
    AND (u.rights != 'manager' OR d.user_id IS NOT NULL) 
+0

यह सही है, धन्यवाद! – RandyLahey

+0

@RandyLahey Glad मैं मदद कर सकता हूँ !! –

-1

लिखें इसे इस तरह

select 
    email, user_id, first_name, last_name, rights 
from 
    users u 
where 
    company_id = 2141 
    and 
    receives_emails = 'y' 
    and 
    (
     (
      u.rights = 'manager' 
      and 
      user_id in (
        select 
         user_id 
        from 
         manager_depts 
        where 
         company_id = u.company_id 
         and 
         dept_id = 2 
       ) 
     ) 
     or 
     (
      u.rights <> 'manager' 
     ) 
    ) 
संबंधित मुद्दे