php - MySQL Select Statement, WHERE 'IN' Clause -
मेरे पास वर्तमान में मेरी तालिका में निम्न पंक्ति है:
course_data: user_id days & lt; - यह एक सारकार स्तंभ है। 405 1,3,5
और मैं निम्नलिखित चयन कथन को लागू करने का प्रयास कर रहा हूं:
का चयन करें usrID, usrFirst, uslLast, usrEmail से tblUsers जहां usrID नहीं (यूजरडीयूआरआईडी द्वारा `course_data` पाठ्यक्रमों में से चुनें,` टीबीएलयूएसर्स 'के उपयोगकर्ता जिनके दिनों में (' $ day ')) यूआरआइडी द्वारा यूआरआइडी द्वारा ग्रुप
असल में, मुझे वह पंक्ति चाहिए (उपयोगकर्ता 405 के साथ) यदि $ दिन चर में '1, 3, या 5' शामिल है, तो छोड़े जाने के लिए
उदाहरण के लिए, यदि $ day = "1"
, तो उसे रिक्त क्वेरी वापस करनी चाहिए (क्योंकि संख्या "1" कॉलम "1,3,5" में है) ।
हालांकि, मुझे यह मामला नहीं मिला है। भले ही $ day = "1"
, यह अभी भी वह पंक्ति देता है।
यह एकमात्र तरीका है कि वह पंक्ति वापस नहीं करेगा, अगर $ day = "1 , 3,5। "
फिर भी, मैंने सोचा कि IN () खंड मेरे वेरिएबल का कोई भी हिस्सा लेगा और उस कॉलम पर लागू करेगा।
मैं गलत क्या कर रहा हूं यहाँ? धन्यवाद।
आपको चार क्षेत्रों का आंशिक मिलान करने के लिए उपयोग करना चाहिए:
जहां '% 1%' जैसे दिन
संपादित करें: वोकरक और लुकास लालिंसकी दोनों, MySQL का find_in_set
सुझाव देते हैं, जो कि संभवत: जैसा
से आप क्या करना चाहते हैं हालांकि, आपके डेटाबेस को सामान्य करने के बारे में निम्न अनुशंसा अभी भी लागू होती है।
हालांकि, आपको एकल डेटाबेस फ़ील्ड में कई मान संग्रहीत नहीं करना चाहिए। इसके बजाय, दो टेबल का उपयोग करने पर विचार करें:
course_data: user_id course_days: user_id day_number
तब, आपके पास निम्न डेटा होगा:
course_data: user_id 405 course_days user_id day_number 405 1 405 3 405 5
आप फिर से इस स्कीमा से क्वेरी कर सकते हैं उदाहरण के लिए:
cd.user_id cd.user_id को सीडी के रूप में चुनें जहां cd.user_id नहीं है (course_days.user_id को course_days से चुनें जहां course_days.user_id = cd.user_id और course_days.day_number = 1) < / Code>
(या, यह बंद होना चाहिए; मैं बिल्कुल नहीं चाहता हूँ कि आप क्या पूरा करने का प्रयास कर रहे हैं या बाकी की स्कीमा इस तरह दिखती है, तो यह एक सर्वोत्तम अनुमान है)।
Comments
Post a Comment