दिलचस्प पोस्ट
जीसीसी के स्टैक संरक्षण सुविधा का कब और कैसे उपयोग करें? एनजी-बाइंड-एचटीएमएल कम्पाइल ऐन्जलरज कोड कैसे करें जावा में एक वेब पेज का एक स्क्रीनशॉट लो एंड्रॉइड मैप्स प्वाइंट क्लस्टरिंग UIButton टच और होल्ड कार्यों के लिए क्लिक करने योग्य लिंक के साथ IOS UITextView या UILabel एक बैंक विवाद क्या है? (कुडा / ओपनसीएल प्रोग्रामिंग करना) 1/0 कानूनी जावा अभिव्यक्ति क्या है? अपेक्षित के रूप में WPF WebBrowser माउस ईवेंट काम नहीं कर रहा है Excel फ़ाइल (.xls / .xlsx) को पढ़ने का सर्वोत्तम तरीका सी कोड में द्विआधारी संख्या प्रणाली लेखन Javac: त्रुटियों के रूप में चेतावनियां का इलाज करें वेब पर फ़ॉन्ट Django ModelForm में सहेजें विधि को ओवरराइड कर रहा है स्ट्रिंग के रूप में विधि का नाम देते समय मैं जावा विधि कैसे खोलूं?

MySQL: किसी भी रेंज में सभी तिथियां चुनें, भले ही कोई रिकॉर्ड मौजूद न हो

मेरे पास उपयोगकर्ता के डेटाबेस है मैं उपयोगकर्ता आधार विकास के आधार पर एक ग्राफ बनाना चाहता हूं। अब मुझे यह क्वेरी है:

SELECT DATE(datecreated), count(*) AS number FROM users WHERE DATE(datecreated) > '2009-06-21' AND DATE(datecreated) <= DATE(NOW()) GROUP BY DATE(datecreated) ORDER BY datecreated ASC 

यह लगभग मुझे क्या चाहिए चाहता है यदि हमें एक दिन में 0 उपयोगकर्ता मिलते हैं, तो उस दिन को 0 मान के रूप में नहीं लौटाया जाता है, यह केवल छोड़ा जाता है और अगले दिन जिस पर कम से कम एक उपयोगकर्ता लौट आया है। मैं कुछ कैसे प्राप्त कर सकता हूं (psuedo-response):

 date1 5 date2 8 date3 0 date4 0 date5 9 etc... 

जहां शेष तारीखों के साथ क्रमिक क्रम में शून्य दिखाई देती है?

धन्यवाद!

वेब के समाधान से एकत्रित समाधान "MySQL: किसी भी रेंज में सभी तिथियां चुनें, भले ही कोई रिकॉर्ड मौजूद न हो"

मुझे आशा है कि आप बाकी को समझेंगे

 select * from ( select date_add('2003-01-01 00:00:00.000', INTERVAL n5.num*10000+n4.num*1000+n3.num*100+n2.num*10+n1.num DAY ) as date from (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n1, (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n2, (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n3, (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n4, (select 0 as num union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) n5 ) a where date >'2011-01-02 00:00:00.000' and date < NOW() order by date 

साथ में

 select n3.num*100+n2.num*10+n1.num as date 

आपको 0 से अधिकतम (एन 3) * 100 + अधिकतम (एन 2) * 10 + अधिकतम (एन 1) की संख्या वाला कॉलम मिलेगा

चूंकि हमारे पास अधिकतम 3 नंबर हैं 3, SELECT 399, प्लस 0 -> 400 रिकॉर्ड (कैलेंडर में दिनांक) वापस आएंगे।

आप इसे सीमित करके अपने गतिशील कैलेंडर को ट्यून कर सकते हैं, उदाहरण के लिए, न्यूनतम (तिथि) से अब आपके पास () है।

यह प्रश्न मुझे लगता है कि वही बात पूछता है। आम तौर पर स्वीकार किए जाते हैं उत्तर ऐसा लगता है कि आप इसे अपने आवेदन तर्क में (एक सरणी में पढ़ते हैं, तो सरणी के माध्यम से लूप में पढ़ते हैं और गायब तारीखें बनाते हैं), या आप उन तिथियों से भरी हुई अस्थायी टेबल का उपयोग करते हैं जो आप चाहते हैं में शामिल हो।

यह करना बेहतर है:

 -- 7 Days: set @n:=date(now() + interval 1 day); SELECT qb.day_series as days , COALESCE(col_byte, 0) as Bytes from tbl1 qa right join ( select (select @n:= @n - interval 1 day) day_series from tbl1 limit 7 ) as qb on date(qa.Timestamp) = qb.day_series and qa.Timestamp > DATE_SUB(curdate(), INTERVAL 7 day) order by qb.day_series asc -- 30 Days: set @n:=date(now() + interval 1 day); SELECT qb.day_series as days , COALESCE(col_byte, 0) as Bytes from tbl1 qa right join ( select (select @n:= @n - interval 1 day) day_series from tbl1 limit 30 ) as qb on date(qa.Timestamp) = qb.day_series and qa.Timestamp > DATE_SUB(curdate(), INTERVAL 30 day) order by qb.day_series asc; 

या इस तरह चर के बिना:

 SELECT qb.day_series as days , COALESCE(col_byte, 0) as Bytes from tbl1 qa right join ( select curdate() - INTERVAL aa day as day_series from( select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 ) as a ) as qb on date(qa.Timestamp) = qb.day_series and qa.Timestamp > DATE_SUB(curdate(), INTERVAL 7 day) order by qb.day_series asc; 

किसी तालिका में सही बाहरी शामिल होने पर, इसे टीबीएल कैलेंडर कहते हैं, जो आपके द्वारा रिपोर्ट की जाने वाली तारीखों से पूर्व-आबादी होती है। और दिनांक फ़ील्ड में शामिल हों।

पॉल

आगे की सोच पर, ऐसा कुछ होना चाहिए जो आप चाहते हैं:

 CREATE TEMPORARY TABLE DateSummary1 ( datenew timestamp ) SELECT DISTINCT(DATE(datecreated)) as datenew FROM users; CREATE TEMPORARY TABLE DateSummary2 ( datenew timestamp, number int ) SELECT DATE(datecreated) as datenew, count(*) AS number FROM users WHERE DATE(datecreated) > '2009-06-21' AND DATE(datecreated) <= DATE(NOW()) GROUP BY DATE(datecreated) ORDER BY datecreated ASC; SELECT ds1.datenew,ds2.number FROM DateSummary1 ds1 LEFT JOIN DateSummary2 ds2 on ds1.datenew=ds2.datenew; 

यह आपको पहली तालिका में सभी तिथियां देता है, और दूसरी तालिका में count सारांश डेटा देता है। आपको ds2.number IF(ISNULL(ds2.number),0,ds2.number) या IF(ISNULL(ds2.number),0,ds2.number) ds2.number को बदलने की आवश्यकता हो सकती है।

क्वेरी है:

 SELECT qb.dy as yourday, COALESCE(count(yourcolumn), 0) as yourcount from yourtable qa right join ( select curdate() as dy union select DATE_SUB(curdate(), INTERVAL 1 day) as dy union select DATE_SUB(curdate(), INTERVAL 2 day) as dy union select DATE_SUB(curdate(), INTERVAL 3 day) as dy union select DATE_SUB(curdate(), INTERVAL 4 day) as dy union select DATE_SUB(curdate(), INTERVAL 5 day) as dy union select DATE_SUB(curdate(), INTERVAL 6 day) as dy ) as qb on qa.dates = qb.dy and qa.dates > DATE_SUB(curdate(), INTERVAL 7 day) order by qb.dy asc; 

और परिणाम है:

 +------------+-----------+ | yourday | yourcount | +------------+-----------+ | 2015-06-24 | 274339 | | 2015-06-25 | 0 | | 2015-06-26 | 0 | | 2015-06-27 | 0 | | 2015-06-28 | 134703 | | 2015-06-29 | 87613 | | 2015-06-30 | 0 | +------------+-----------+