Sunday, 15 May 2011

mysql Stored Procedure Dynamic Where Clause -


मेरे पास एक संग्रहीत कार्यविधि में निम्नलिखित क्वेरी है:

  SELECT * से tempProfile WHERE 1 = 1 और मामले जब l_primarymailingaddress = 'address1' तब find_in_set (add1_stateid, p_stateid) या p_stateid नल है जब l_primarymailingaddress = 'address2' फिर find_in_set (add2_stateid, p_stateid) या p_stateid नल अंत है;  

मैं p_stateid पर आईडी की एक सूची पास कर रहा हूँ।

पहला मामला मेल खाता है, लेकिन दूसरा मामला नहीं है।

इसलिए यदि, उदाहरण के लिए, मैं 7 में से गुजरता हूं, तो मैं उन सभी परिणामों को वापस प्राप्त करता हूं जिनके पास 7 add1_stateid में हैं, क्वेरी उन परिणामों को नहीं लौट रही है जिनके पास 7 में add2_stateid है।

क्या कोई भी यह देख सकता है कि मैं यहाँ क्या गलत कर रहा हूं?

बहुत धन्यवाद

< P>

ठीक है - पता करने के लिए मेरे उत्तर को अपडेट किया गया है, जहां आपने स्पष्ट रूप से बताया है कि आप in_set और P_stateid का उपयोग क्यों कर रहे थे क्या केस स्टेटमेंट को दो में तोड़ना और किसी एक का उपयोग करके या उनमें से प्रत्येक की तुलना करने के लिए काम करना है?

  SELECT * FROM tempProfile WHERE के मामले में जब l_primarymailingaddress = 'address1' और find_in_set (add1_stateid, p_stateid) तब 1 0 अंत या मामले जब l_primarymailingaddress = 'address2' और find_in_set (add2_stateid, p_stateid) तब 1 या 0 या तो p_stateid नल है;  

दूसरा अद्यतन - दूसरा जोड़ा गया है या p_stateid नल है जब रिकॉर्ड वापस करने के लिए


No comments:

Post a Comment