मेरे पास प्रतिदिन उपस्थिति लेने के लिए एक डेटाबेस है। हर दिन को एक डेटाटाइम (उपस्थित) फ़ील्ड में शामिल किया जाता है क्योंकि कभी भी कोई छात्र नहीं होता है। इसलिए, एक विशेष छात्र आईडी के लिए (sid) मुझे लगता है कि मैं NOT IN का उपयोग करके उपस्थिति के अंतराल को भरने में सक्षम होऊंगा।
select arrived, date_format(arrived,'%a') as 'day'
from attendance
where sid = '38'
and date_format(arrived, '%Y-%m-%d') NOT IN (
select DISTINCT date_format(arrived, '%Y-%m-%d')
from attendance
where MONTH(arrived) = 6
)
and MONTH(arrived) = 6
हालाँकि, यह वही परिणाम उत्पन्न करता है जैसे कि मैंने NOT IN का उपयोग बिल्कुल नहीं किया था। अब मैं महसूस कर रहा हूं कि वे लापता तिथियां प्रिंट नहीं कर सकतीं क्योंकि वे शुरू करने के लिए सीमित क्वेरी में नहीं हैं। क्या मैं नॉट इन को क्वेरी के सामने ले जा सकता हूं, ताकि वास्तविक तिथियां जिन्हें मैं अनुपस्थित के रूप में प्रदर्शित करना चाहता हूं, प्रदर्शित करने योग्य हैं। उदाहरण के लिए, छात्र 2019-06-06 में अनुपस्थित था (चूंकि 'उसकी' क्वेरी में वह तारीख गायब है और अन्य छात्र थे (इसलिए नेस्टेड क्वेरी करती है 2019-06-06 दिखाती है)
2 जवाब
यह पहेली देखें: https://www.db-fiddle.com/f/x8VVvMBmizmsbJRHmY1GEd/ 0
select date(absences) absences from (select distinct date(arrived) absences from attendance) t2
where date(t2.absences) not in (select date(arrived) from attendance where sid=38)
आपको आंतरिक और बाहरी क्वेरी को स्वैप करने की आवश्यकता है। आपको उन सभी छात्रों की उपस्थिति के दिनों की तलाश करनी चाहिए जो विशिष्ट छात्र की उपस्थिति के दिनों में नहीं हैं (एसआईडी = 38):
select DISTINCT date(arrived) as 'day'
from attendance
where date(arrived) NOT IN (
select date(arrived)
from attendance
where sid = '38'
and MONTH(arrived) = 6
)
and MONTH(arrived) = 6
संबंधित सवाल
नए सवाल
mysql
MySQL एक फ्री, ओपन सोर्स रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) है जो स्ट्रक्चर्ड क्वेरी लैंग्वेज (SQL) का उपयोग करता है। इस टैग को अन्य DBs जैसे SQL Server, SQLite आदि के लिए उपयोग न करें। वे विभिन्न DB हैं जो सभी डेटा का प्रबंधन करने के लिए SQL की अपनी बोलियों का उपयोग करते हैं।