Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सभी तिथियों के बीच दिखाएं, भले ही कोई परिणाम न हो

आप अपनी इच्छित सभी तिथियों के लिए MySQL चर का उपयोग करके एक स्वचालित परिणाम सेट बना सकते हैं।

select
      AllDaysYouWant.MyJoinDate,
      count( U.User_ID ) as NumberJoined
   from
      ( select
              @curDate := Date_Add(@curDate, interval 1 day) as MyJoinDate
           from
              ( select @curDate := '2012-11-21' ) sqlvars,
              Users
           limit 18 ) AllDaysYouWant
      LEFT JOIN Users U
         on AllDaysYouWant.MyJoinDate = U.User_JoinDate
   group by
      AllDaysYouWant.MyJoinDate

आंतरिक प्रश्न, मैं बिना किसी कुंजी के उपयोगकर्ता तालिका में शामिल हो रहा हूं, इसलिए इसका उपयोग केवल आपके इच्छित दिन की अवधि का प्रतिनिधित्व करने के लिए एक्स संख्या रिकॉर्ड के माध्यम से चक्र के लिए किया जाता है ... यह 30, 100 हो सकता है, जो भी हो .... बस जब तक तालिका (इस मामले में उपयोगकर्ता) में उतने रिकॉर्ड हैं जितने आप उम्मीद कर रहे हैं।

फिर, कुछ नहीं बल्कि दिनों का परिणाम उपयोगकर्ता तालिका में शामिल हो गया है, लेकिन इस बार, उपयोगकर्ता के JOIN_DATE के आधार पर। सरल COUNT() आपको वह प्राप्त करना चाहिए जो आप चाहते हैं।

"AllDaysYouWant"

. की आंतरिक प्रथम भाग क्वेरी को असाइन किया गया उपनाम है
  ( select
          @curDate := Date_Add(@curDate, interval 1 day) as MyJoinDate
       from
          ( select @curDate := '2012-11-21' ) sqlvars,
          Users
       limit 18 ) AllDaysYouWant

यह मूल रूप से बताता है ... उपयोगकर्ता तालिका से (लेकिन कोई भी हो सकता है), मुझे डेटा की 18 पंक्तियाँ दें (सीमा के माध्यम से, लेकिन लगभग किसी भी संख्या में रिकॉर्ड हो सकते हैं, लेकिन आपको केवल 22 नवंबर से 6 दिसंबर तक की आवश्यकता है, जो कि केवल 14 दिन, लेकिन मैंने केवल सिद्धांत के लिए 18 किया, यह लगभग कुछ भी हो सकता है। उपयोगकर्ता तालिका के ऊपर है (चयन @curDate:='2012-11-21' ) sqlvars। किसी क्वेरी के भीतर कोई भी चयन कथन जो कोष्ठक में लपेटा गया है तालिका स्रोत को एक उपनाम दिया जाना चाहिए और चूंकि यह केवल एक चर है जिसका मैं उपयोग कर रहा हूं, इसकी परवाह नहीं है कि इसका नाम क्या है। इसलिए, यह क्वेरी 21 नवंबर को चर शुरू करती है और चुनें @curDate:=Date_Add... blah blah में @curDate का वर्तमान मान लेने के लिए कहा गया है, इसमें 1 दिन जोड़ें (अब 22 नवंबर हो जाता है) और इसे "MyJoinDate" लौटाई गई पंक्ति में संग्रहीत करें। तो अब, यह आंतरिक क्वेरी 22 नवंबर से जाने वाली तारीखों की आपकी तालिका बनाती है। अग्रेषित करने के लिए 18 दिनों का डेटा और शेष क्वेरी के लिए उपनाम "AllDaysYouWant" है।

मैंने उस क्वेरी को समायोजित कर लिया है जो शायद आपने सामना किया था, उपनाम के लिए। स्पष्टीकरण के लिए सब कुछ फ़ील्ड करें...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एकाधिक क्षेत्रों की तुलना करने के लिए MySQL में OR LIKE Query का उपयोग करना

  2. MySQL pid समाप्त हो गया (mysql प्रारंभ नहीं कर सकता)

  3. MySQL गिनती बनाम MySQL चयन करें, कौन सा तेज़ है?

  4. MYSQL, द्वारा बहुत धीमा क्रम

  5. यह पता लगाने के 3 तरीके कि क्या कोई स्ट्रिंग MySQL में रेगुलर एक्सप्रेशन से मेल खाती है