ओपी ने कहा:
समस्या यह है कि where
क्लॉज परिणाम सेट को फ़िल्टर करता है, इसलिए req.status
. के लिए आपका परीक्षण जहां req.status
. 2 या 5 में से कोई भी चीज बाहर फेंक देती है शून्य है क्योंकि कोई भी पंक्ति तालिका से मेल नहीं खाती applications
।
सामान्य, सैद्धांतिक (चूंकि एक मामूली कार्यान्वयन के अलावा कुछ भी वास्तव में ऐसा कुछ भी नहीं करेगा) select
के लिए संचालन का क्रम कथन है:
from
. में सूचीबद्ध प्रत्येक तालिका का पूर्ण कार्टेशियन उत्पाद तैयार करें खंड।- फ़िल्टर करें कि निर्दिष्ट
join
. को लागू करके मानदंड और हटाई गई पंक्तियाँ जो निर्दिष्ट परीक्षण पास नहीं करती हैं। where
में निर्दिष्ट फ़िल्टर मानदंड लागू करें क्लॉज, उन पंक्तियों को हटाना जो निर्दिष्ट परीक्षणों को पास नहीं करते हैं।- परिणामों को
group by
में निर्दिष्ट भावों पर सेट करें खंड और विभाजन परिणाम समूहों में सेट करें। - सभी निर्दिष्ट समग्र कार्यों के मूल्य की गणना करते हुए, ऐसे प्रत्येक समूह को एक पंक्ति में संक्षिप्त करें।
- परिणामों के उन सभी स्तंभों को हटा दें जो
select
. में सूचीबद्ध नहीं हैं स्टेटमेंट कॉलम लिस्ट। - इस अंतिम परिणाम को
order by
में निर्दिष्ट कॉलम/अभिव्यक्तियों द्वारा सेट करें खंड।
आप दो में से एक काम कर सकते हैं:
-
शून्यता के परीक्षण के लिए अपनी क्वेरी बदलें:
where...( req.status is null OR req.status in (2,5) )...
-
req.status
. पर परीक्षण को आगे बढ़ाएं शामिल होने के मानदंड के अनुसार:left join requests req on req.app_id = apps.id and req.uid = {$user_id} and req.status in (2,5)