Empty Rows in MySQL SELECT with LEFT JOIN -


मेरे पास तीन तालिकाओं हैं: उपयोगकर्ता , सुविधाएं , और < कोड> कर्मचारी_संकल्प ।

उपयोगकर्ता में औसत उपयोगकर्ता डेटा है, मेरे मामले में सबसे महत्वपूर्ण फ़ील्ड users.id , प्रयोक्ता। प्रथम , और प्रयोक्ता। अज्ञात

सुविधा में भी उचित मात्रा में डेटा होता है, लेकिन इसमें से कोई भी जरूरी नहीं है facilities.id को छोड़कर इस उदाहरण के लिए।

staff_facilties में staff_facilities.id (int, auto_inc, not null) के होते हैं , staff_facilities.users_id (int, not null), और staff_faciltities.facilities_id (int, not null)। (यह एक कौर है!)

कर्मचारी_संकल्प अन्य दो तालिकाओं के लिए आईडी का संदर्भ देता है, और हम इस तालिका को उपयोगकर्ताओं की सुविधाओं और सुविधाओं के उपयोगकर्ताओं को देखने के लिए बुला रहे हैं।

यह मेरी चुनिंदा क्वेरी PHP में है:

  का चयन करें users.id, users.first, users.last से staff_facilities कर्मचारियों को छोड़ें staff_facilities.users_id = users.id WHERE staff_facilities यह प्रश्न हमारे विकास सर्वर पर बहुत अच्छा काम करता है, लेकिन जब मैं इसे क्लाइंट के उत्पादन परिवेश में छोड़ देता हूं, कई बार रिक्त पंक्तियां परिणाम सेट में दिखाई देती हैं I हमारा विकास सर्वर प्रतिकृति टेबल और डेटा का उपयोग कर रहा है जो पहले से ही ग्राहक के उत्पादन सर्वर पर मौजूद है, लेकिन हार्डवेयर और सॉफ़्टवेयर में काफी कुछ भिन्न होता है।  

इन पंक्तियों को किसी भी जानकारी से रहित नहीं है, जिसमें तीन आईडी फ़ील्ड शामिल हैं डेटाबेस में प्रवेश करने के लिए शून्य मान की आवश्यकता नहीं है बैकएंड पर MySQL प्रबंधन उपकरण के माध्यम से क्वेरी को चलाने से एक ही परिणाम देता है। नल फ़ील्ड के लिए तालिका खोजना कुछ भी नहीं हुआ है।

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

मैंने कई बार बायां जोड़ों के कारण लगभग डुप्लिकेट पंक्तियों को लौटाने का काम किया है, लेकिन मैंने कभी नहीं किया है यह पहले होता है जहां तक ​​सूचना प्रदर्शित होती है, मैं इसे अंत उपयोगकर्ता से आसानी से छुपा सकता हूं मेरी चिंता मुख्य रूप से है कि समय की गुंजाइश के रूप में यह समस्या बढ़ेगी और रिकॉर्ड की संख्या में बड़ा हो जाता है जैसा कि यह बैठता है, यह प्रणाली अभी स्थापित हो चुकी है, और हमारे पास पहले से ही staff_facilities तालिका में 2000+ रिकॉर्ड हैं

कोई अंतर्दृष्टि या दिशा की सराहना की जाएगी। मैं और भी अधिक विस्तृत उदाहरणों और सूचनाओं को भी साथ ही प्रदान कर सकता हूं।

आप केवल तालिका से कॉलम का चयन कर रहे हैं शामिल होने का सही पक्ष बेशक उनमें से कुछ पूरी तरह से अशक्त हैं, आपने एक बाएं जुड़ने में शामिल किया था। इसलिए वे रिकॉर्ड जुड़ने के बाईं ओर तालिका में एक आईडी से मेल खाते हैं, लेकिन शामिल होने के दाईं ओर के किसी भी डेटा पर नहीं। चूंकि आप बाएं तालिका से कोई भी कॉलम नहीं लौट रहे हैं, इसलिए आपको कोई डेटा नहीं मिलता है।


Comments

Popular posts from this blog

c++ - Linux and clipboard -

What is expire header and how to achive them in ASP.NET and PHP? -

sql server - How can I determine which of my SQL 2005 statistics are unused? -